PHP: ใช้ WordPress API เพื่อสร้างรหัสย่อเพื่อแสดงรายการหน้าย่อย
เรากำลังดำเนินการใช้งานที่ค่อนข้างซับซ้อนสำหรับลูกค้าองค์กรในขณะนี้ ไซต์กำลังสร้างขึ้นใน WordPress แต่มีระฆังและนกหวีดมากมาย บ่อยครั้งเมื่อฉันทำงานประเภทนี้ฉันต้องการบันทึกโค้ดที่กำหนดเองเพื่อนำไปใช้ซ้ำในไซต์อื่นในภายหลัง ในกรณีนี้ฉันคิดว่ามันเป็นฟังก์ชั่นที่มีประโยชน์ฉันอยากจะแบ่งปันให้กับคนทั้งโลก เรากำลังใช้ไฟล์ ธีม Avada WordPress พร้อม Fusion Page Builder เป็นธีมหลักและปรับใช้โค้ดที่กำหนดเองในธีมลูกของเรา
WordPress มีฟังก์ชันสองอย่างใน API อยู่แล้วซึ่งสามารถใช้แสดงรายการหน้าย่อยเช่น wp_list_pages และ get_pages ปัญหาคือพวกเขาส่งคืนข้อมูลไม่เพียงพอหากคุณต้องการสร้างรายการแบบไดนามิกพร้อมข้อมูลจำนวนมาก
สำหรับลูกค้ารายนี้พวกเขาต้องการโพสต์คำอธิบายงานและให้รายชื่อตำแหน่งงานว่างโดยอัตโนมัติจะถูกสร้างขึ้นโดยเรียงลำดับจากมากไปหาน้อยตามวันที่เผยแพร่ พวกเขายังต้องการแสดงข้อความที่ตัดตอนมาของหน้า
ก่อนอื่นเราต้องเพิ่มการสนับสนุนที่ตัดตอนมาให้กับเทมเพลตเพจ ใน functions.php สำหรับธีมเราได้เพิ่ม:
add_post_type_support ('หน้า', 'ข้อความที่ตัดตอนมา');
จากนั้นเราจำเป็นต้องลงทะเบียนรหัสย่อที่กำหนดเองซึ่งจะสร้างรายการหน้าย่อยลิงก์ไปยังหน้าเหล่านั้นและข้อความที่ตัดตอนมาให้ ทำเช่นนี้เราต้องใช้ไฟล์ WordPress ห่วง. ใน functions.php เราได้เพิ่ม:
// แสดงรายการหน้าย่อยในฟังก์ชัน List dknm_list_child_pages ($ atts, $ content = "") {global $ post; $ atts = shortcode_atts (array ('ifempty' => 'No Records', 'aclass' => ''), $ atts, 'list_subpages'); $ args = array ('post_type' => 'page', 'posts_per_page' => -1, 'post_parent' => $ post-> ID, 'orderby' => 'published_date', 'order' => 'DESC' ,); $ parent = WP_Query ใหม่ ($ args); ถ้า ($ parent-> have_posts ()) {$ string. = $ content. ' '; ในขณะที่ ($ parent-> have_posts ()): $ parent-> the_post (); $ string. = ' '.get_the_title ().' '; ถ้า (has_excerpt ($ post-> ID)) {$ string. = '-' .get_the_excerpt (); } $ string. = ' '; ในที่สุด; } else {$ string = ' '. $ atts [' ifempty '].' '; } wp_reset_postdata (); ส่งคืน $ string; } add_shortcode ('list_subpages', 'dknm_list_child_pages');
ตอนนี้สามารถใช้รหัสย่อทั่วทั้งไซต์เพื่อแสดงหน้าย่อยพร้อมลิงก์และข้อความที่ตัดตอนมา การใช้งาน:
[list_subpages aclass = "button" ifempty = "ขออภัยขณะนี้เราไม่มีตำแหน่งงานว่าง"] รายชื่องาน [/ list_subpages]
ผลลัพธ์ที่ได้คือรายการงานที่เผยแพร่โดยไม่เรียงลำดับที่ดีและสะอาดซึ่งเป็นเพจย่อยในเพจอาชีพ
หากไม่มีการเผยแพร่งาน (ไม่มีเพจย่อย) จะเผยแพร่:
ขออภัยขณะนี้เราไม่มีตำแหน่งงานว่าง
หากมีการเผยแพร่งาน (เพจย่อย) จะเผยแพร่:
รายชื่องาน:
- ล่าสุดลูกเพจ - ข้อความที่ตัดตอนมาจากหน้าเด็ก
- หน้าเด็กถัดไป - ข้อความที่ตัดตอนมาจากหน้าเด็ก
- หน้าเด็กถัดไป - ข้อความที่ตัดตอนมาจากหน้าเด็ก