PHP: Gamitin ang WordPress API upang Bumuo ng isang Shortcode sa Listahan ng Mga Subpage

WordPress PHP

Nagsusumikap kami sa isang kumplikadong pagpapatupad para sa isang client ng negosyo ngayon. Ang site ay itinatayo sa WordPress ngunit may isang tonelada ng mga kampanilya at sipol. Kadalasan, kapag ginagawa ko ang ganitong uri ng trabaho, nais kong i-save ang pasadyang code para sa repurposing sa ibang pagkakataon sa ibang mga site. Sa kasong ito, naisip ko na ito ay isang kapaki-pakinabang na pag-andar, nais kong ibahagi ito sa mundo. Ginagamit namin ang Ang tema ng Avada WordPress kasama ang Tagabuo ng Pahina ng Fusion bilang isang tema ng magulang, at pag-deploy ng medyo isang pasadyang code sa tema ng aming anak.

Ang WordPress ay mayroon nang isang pag-andar sa API nito na maaaring magamit upang ilista ang mga subpage, tulad ng wp_list_pages at get_pages. Ang problema ay hindi sila nagbabalik ng sapat na impormasyon kung inaasahan mong lumikha ng isang listahan nang maraming impormasyon.

Para sa kostumer na ito, nais nilang mag-post ng mga paglalarawan sa trabaho at magkaroon ng listahan ng mga bukas na trabaho na awtomatikong nabuo sa pababang pagkakasunud-sunod ayon sa kanilang petsa ng pag-publish. Nais din nilang ipakita ang isang sipi ng pahina.

Kaya, una, kailangan naming magdagdag ng suporta ng sipi sa template ng pahina. Sa mga function.php para sa kanilang tema, idinagdag namin ang:

add_post_type_support ('pahina', 'sipi');

Pagkatapos, kailangan naming magparehistro ng isang pasadyang shortcode na makakabuo ng listahan ng mga subpage, mga link sa kanila, at ang sipi para sa kanila. Gawin ito, kailangan nating gamitin ang WordPress Loop. Sa mga function.php, nagdagdag kami:

// List Subpages in a List function dknm_list_child_pages ($ atts, $ content = "") {global $ post; $ atts = shortcode_atts (array ('ifempty' => 'Walang Records', 'aclass' => ''), $ atts, 'list_subpages'); $ args = array ('post_type' => 'pahina', 'posts_per_page' => -1, 'post_parent' => $ post-> ID, 'orderby' => 'publish_date', 'order' => 'DESC' ,); $ magulang = bagong WP_Query ($ args); kung ($ magulang-> may_post ()) {$ string. = $ nilalaman. ' '; habang ($ magulang-> may_post ()): $ magulang-> the_post (); $ string. = ' '.get_the_title ().' '; kung (has_excerpt ($ post-> ID)) {$ string. = '-' .get_the_excerpt (); } $ string. = ' '; pansamantala; } iba pa {$ string = ' '. $ atts [' ifempty '].' '; } wp_reset_postdata (); ibalik ang $ string; } add_shortcode ('list_subpages', 'dknm_list_child_pages');

Ngayon, maaaring ipatupad ang shortcode sa buong site upang maipakita ang mga pahina ng bata na may isang link at sipi. Paggamit:

[list_subpages aclass = "button" ifempty = "Paumanhin, kasalukuyang wala kaming mga bakanteng trabaho."] Listahan ng Mga Trabaho [/ list_subpages]

Ang resulta ay isang maganda, malinis na hindi naiayos na listahan ng mga nai-publish na trabaho, na mga pahina ng bata sa ilalim ng kanilang pahina ng karera.

Kung walang na-publish na mga trabaho (walang mga pahina ng bata), lathala nito:

Paumanhin, kasalukuyang wala kaming mga bakanteng trabaho.

Kung may mga trabahong na-publish (mga pahina ng bata), lathala nito:

Listahan ng Mga Trabaho:

Ano sa tingin ninyo?

Ang site na ito ay gumagamit ng Akismet upang mabawasan ang spam. Alamin kung paano naproseso ang data ng iyong komento.