ดึงฟิลด์ฟิลด์ที่กำหนดเองขั้นสูงทั้งหมด (ACF) ภายใน Corcel ได้อย่างง่ายดาย
ปลั๊กอิน Corcel นี้ช่วยให้คุณสามารถดึงฟิลด์ที่กำหนดเอง WordPress ที่สร้างขึ้นโดยปลั๊กอิน ACF โดยใช้ไวยากรณ์เดียวกันของ ELOQUENT จากเฟรมเวิร์ก Laravel คุณสามารถใช้แบบจำลองและคอลเลกชันที่มีคารมคมคายเพื่อปรับปรุงการพัฒนาของคุณโดยใช้แบ็กเอนด์ WordPress ด้วยแอปพลิเคชัน PHP ใด ๆ
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของ Corcel โปรดไปที่ที่เก็บ
คอก | Laravel | PHP |
---|---|---|
^4.0 | 7.x | >=7.2 |
^5.0 | 8.x | >=7.3 |
ในการติดตั้งปลั๊กอิน ACF สำหรับ Corcel นั้นง่าย:
composer require corcel/acf
Corcel เป็นสิ่งจำเป็นสำหรับปลั๊กอินนี้ แต่ไม่ต้องกังวลหากขาดหายไปมันจะถูกติดตั้งเช่นกัน
นี่คือเวอร์ชันการพัฒนาเพื่อให้การใช้งานสามารถเปลี่ยนแปลงได้เพิ่มเติม พฤติกรรมที่ต้องการของปลั๊กอินนี้คือการอนุญาตให้:
$ post = Post :: find ( 1 );
echo $ post -> acf -> url ; // returns the url custom field created using ACF
เมื่อใช้บางอย่างเช่น $post->acf->url
ปลั๊กอินจะต้องทำการสืบค้น SQL พิเศษเพื่อรับประเภทฟิลด์ตามวิธี ACF ดังนั้นเราจึงสร้างวิธีอื่นเพื่อให้ได้โดยไม่ต้องทำการสืบค้นพิเศษเหล่านั้น คุณมีเพียงการแจ้งปลั๊กอินเพียงประเภทโพสต์เป็นฟังก์ชั่น:
// Extra queries way
echo $ post -> acf -> author_username ; // it's a User field
// Without extra queries
echo $ post -> acf -> user ( ' author_username ' );
PS: ชื่อวิธีการควรเขียนในรูปแบบ
camelCase()
ตัวอย่างเช่นสำหรับประเภทฟิลด์date_picker
คุณควรเขียน$post->acf->datePicker('fieldName')
ปลั๊กอินทำการแปลงจากcamelCase
เป็นsnake_case
สำหรับคุณ
การใช้ค่าเริ่มต้น $post->meta->field_name
ใน Corcel ส่งคืนค่าของคอลัมน์ meta_value
ในตาราง wp_postmeta
มันอาจเป็นสตริงจำนวนเต็มหรือแม้แต่อาร์เรย์ที่ต่อเนื่องกัน ปัญหาคือเมื่อคุณใช้ ACF ค่านี้อาจเป็นมากกว่านั้น หากคุณมีจำนวนเต็มตัวอย่างเช่นอาจเป็น post id
user id
หรือแม้แต่อาร์เรย์ของ posts ids
ACF ต้องสร้างแบบสอบถาม SQL 2 (สอง) เพื่อค้นหาประเภทของฟิลด์ดังนั้นตามประเภทมันมีพฤติกรรมที่แตกต่างกันกับ meta_value
ตัวอย่างเช่นหากค่าคือ 45
และ post type
คือ post_object
ค่า 45
เป็นโพสต์ที่มี ID 45
ดังนั้นในกรณีนี้ Corcel ควรส่งคืนอินสแตนซ์ CorcelPost
แทนเพียงแค่จำนวนเต็ม
ACF แรกดึงข้อมูล meta_value
ในตาราง wp_postmeta
ซึ่ง meta_key
เป็นบางอย่างเช่น _field_name
และรหัสโพสต์คือ ID ของโพสต์ที่คุณต้องการฟิลด์ที่กำหนดเอง ค่าที่ส่งคืนคือ field key
และดูเหมือนว่า field_57f421a2b81bd
นี้ ด้วยคีย์นี้มันจะดึงโพสต์ที่เกี่ยวข้องใน wp_posts
โดยที่ post_name = 'field_57f421a2b81bd'
ด้วยผลลัพธ์จะได้รับค่า post_content
อาร์เรย์ที่ต่อเนื่องกัน deserialize และรับเนื้อหาในคีย์ type
นี่คือประเภทของฟิลด์ ตามที่ ACF (และปลั๊กอินนี้) ทำสิ่งที่ถูกต้อง
ปลั๊กอินนี้ใช้งานได้กับตรรกะพื้นฐานภายในคลาสบทคัดย่อ CorcelAcfFieldBasicField
ซึ่งมีฟังก์ชั่นที่มีประโยชน์มากมายในการส่งคืน field key
value
ฯลฯ CorcelAcfFieldFactory
รับผิดชอบในการส่งคืนอินสแตนซ์ฟิลด์ที่ถูกต้อง ตามประเภทของฟิลด์ดังนั้นหากประเภทของฟิลด์เป็น post_object
มันจะส่งคืนอินสแตนซ์ของ CorcelAcfFieldPostObject
และมันจะกลับมาในวิธี get()
อินสแตนซ์ของ CorcelPost
ก่อนอื่นเราควรสร้างคลาสฟิลด์และกรณีทดสอบ หลังจากเราต้องตั้งค่าว่า Corcel จะทำงานกับปลั๊กอิน corcel/acf
ได้อย่างไรให้ส่งคืนค่าฟิลด์ที่กำหนดเองในฟิลด์ $post->meta->field
หรืออาจ $post->acf->field
ที่มีพฤติกรรมที่แตกต่างกัน (เสร็จสิ้น! ).
Repeater
;Flexible Content
ด้วยการทดสอบหน่วย (เสร็จสิ้น!);whereIn()
คำสั่งบางฟิลด์ยังหายไป (ตารางตรวจสอบด้านล่างและมีส่วนร่วม)
สนาม | สถานะ | ผู้พัฒนา | ผลตอบแทน |
---|---|---|---|
ข้อความ | ตกลง | @jgrossi | string |
textarea | ตกลง | @jgrossi | string |
ตัวเลข | ตกลง | @jgrossi | number |
อีเมล | ตกลง | @jgrossi | string |
url | ตกลง | @jgrossi | string |
รหัสผ่าน | ตกลง | @jgrossi | string |
Wysiwyg (บรรณาธิการ) | ตกลง | @jgrossi | string |
Oembed | ตกลง | @jgrossi | string |
ภาพ | ตกลง | @jgrossi | CorcelAcfFieldImage |
ไฟล์ | ตกลง | @jgrossi | CorcelAcfFieldFile |
แกลลอรี่ | ตกลง | @jgrossi | CorcelAcfFieldGallery |
เลือก | ตกลง | @jgrossi | string หรือ array |
ช่องทำเครื่องหมาย | ตกลง | @jgrossi | string หรือ array |
วิทยุ | ตกลง | @jgrossi | string |
จริง/เท็จ | ตกลง | @jgrossi | boolean |
โพสต์วัตถุ | ตกลง | @jgrossi | CorcelPost |
ลิงค์หน้า | ตกลง | @jgrossi | string |
ความสัมพันธ์ | ตกลง | @jgrossi | CorcelPost หรือ Collection ของ Post |
อนุกรมวิธาน | ตกลง | @jgrossi | CorcelTerm หรือ Collection Term |
ผู้ใช้ | ตกลง | @jgrossi | CorcelUser |
แผนที่ Google | หายไป | ||
ตัวเลือกวันที่ | ตกลง | @jgrossi | CarbonCarbon |
ตัวเลือกเวลาวันที่ | ตกลง | @jgrossi | CarbonCarbon |
ตัวเลือกเวลา | ตกลง | @jgrossi | CarbonCarbon |
ตัวเลือกสี | ตกลง | @jgrossi | string |
ผู้เล่น | ตกลง | @jgrossi | Collection ของฟิลด์ |
เนื้อหาที่ยืดหยุ่น | ตกลง | @marcoboom | Collection |
ยินดีต้อนรับการมีส่วนร่วมทั้งหมด ก่อนที่จะส่งคำขอดึงของคุณดูแนวทางต่อไปนี้:
develop
: git checkout -b my-fix-branch develop
;phpunit
เพื่ออำนวยความสะดวกในการอนุมัติงาน;corcel/acf:develop
เสมอ อย่าส่ง PR ไปยังสาขา master
ของเรา! เราขอแนะนำให้คุณใช้ git flow
(https://github.com/petervanderdoes/gitflow-avh) เวิร์กโฟลว์เพื่อทำให้ชีวิตของคุณง่ายขึ้น มันไม่จำเป็น แต่ก็จะดีสำหรับอาชีพการพัฒนาของคุณPSR-2
(http://www.php-fig.org/psr/psr-2/) ในการเรียกใช้การทดสอบ phpunit ให้ดำเนินการ phpunit
(หากคุณมีการดำเนินการ phpunit ทั่วโลก) หรือลองใช้คำสั่งต่อไปนี้:
./vendor/bin/phpunit
คุณควรนำเข้าไฟล์ database.sql
ไปยังฐานข้อมูลภายในสภาพแวดล้อมท้องถิ่นของคุณเพื่อให้การทดสอบทำงาน เพียงแค่คลายซิปไฟล์ tests/config/database.sql.zip
และตั้งค่าฟิลด์ฐานข้อมูลผู้ใช้และรหัสผ่านใน tests/config/bootstrap.php
หากคุณต้องการเข้าถึงแผงผู้ดูแลระบบ WordPress เพียงใช้ชื่อผู้ใช้เป็น
admin
และรหัสผ่าน123456
ใบอนุญาต MIT © Junior Grossi