PHP: ใช้ WordPress API เพื่อสร้างรหัสย่อเพื่อแสดงรายการหน้าย่อย

WordPress PHP

เรากำลังดำเนินการใช้งานที่ค่อนข้างซับซ้อนสำหรับลูกค้าองค์กรในขณะนี้ ไซต์กำลังสร้างขึ้นใน 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]

ผลลัพธ์ที่ได้คือรายการงานที่เผยแพร่โดยไม่เรียงลำดับที่ดีและสะอาดซึ่งเป็นเพจย่อยในเพจอาชีพ

หากไม่มีการเผยแพร่งาน (ไม่มีเพจย่อย) จะเผยแพร่:

ขออภัยขณะนี้เราไม่มีตำแหน่งงานว่าง

หากมีการเผยแพร่งาน (เพจย่อย) จะเผยแพร่:

รายชื่องาน:

คุณคิดอย่างไร?

ไซต์นี้ใช้ Akismet เพื่อลดสแปม เรียนรู้วิธีการประมวลผลข้อมูลความคิดเห็นของคุณ.