PHP: Sèvi ak API WordPress la pou konstwi yon Shortcode nan lis Subpages

WordPress PHP

Nou ap travay sou byen yon aplikasyon konplèks pou yon kliyan antrepriz kounye a. Sit la te bati nan WordPress men li gen yon tòn klòch ak sifle. Souvan, lè mwen ap fè sa a ki kalite travay, mwen renmen pou konsève pou kòd la koutim pou repurposing pita sou lòt sit. Nan ka sa a, mwen te panse li te tankou yon fonksyon itil, mwen te vle pataje li ak mond lan. Nou ap itilize a Avada WordPress tèm ak Fusion Page Builder la kòm yon tèm paran, ak deplwaye byen yon ti jan nan kòd koutim nan tèm pitit nou yo.

WordPress deja gen yon koup nan fonksyon nan API li yo ki ka itilize nan lis subpages, tankou wp_list_pages ak get_pages. Pwoblèm lan se yo ke yo pa retounen ase enfòmasyon si w ap espere dynamique kreye yon lis ak yon pakèt moun sou enfòmasyon.

Pou kliyan sa a, yo te vle poste deskripsyon travay epi yo gen lis la nan ouvèti travay otomatikman jwenn pwodwi nan desann lòd pa dat pibliye yo. Yo menm tou yo te vle montre yon ekstrè nan paj la.

Se konsa, premye, nou te ajoute sipò ekstrè nan modèl paj la. Nan functions.php pou tèm yo, nou te ajoute:

add_post_type_support ('paj', 'ekstrè');

Lè sa a, nou te bezwen enskri yon shortcode koutim ki ta jenere lis la nan subpages, lyen ki mennen nan yo, ak ekstrè a pou yo. Fè sa, nou dwe itilize WordPress Loop. Nan functions.php, nou te ajoute:

// Lis Subpages nan yon fonksyon Lis dknm_list_child_pages ($ atts, $ kontni = "") {global $ pòs; $ atts = shortcode_atts (etalaj ('ifempty' => 'Pa gen dosye', 'aclass' => ''), $ atts, 'list_subpages'); $ args = array ('post_type' => 'paj', 'posts_per_page' => -1, 'post_parent' => $ post-> ID, 'orderby' => 'publish_date', 'order' => 'DESC' ,); $ paran = nouvo WP_Query ($ arg); si ($ paran-> gen_posts ()) {$ fisèl. = $ kontni. ' '; pandan y ap ($ paran-> gen_posts ()): $ paran-> the_post (); $ fisèl. = ' '.get_the_title ().' '; si (has_excerpt ($ post-> ID)) {$ string. = '-' .get_the_cerce (); } $ fisèl. = ' '; pandan tout tan; } Lòt bagay {$ string = ' '. $ atts [' ifempty '].' '; } wp_reset_postdata (); retounen $ fisèl; } add_shortcode ('list_subpages', 'dknm_list_child_pages');

Koulye a, shortcode a kapab aplike nan tout sit la pou montre paj timoun yo ak yon lyen ak ekstrè. Itilizasyon:

[list_subpages aclass = "bouton" ifempty = "Padon, nou kounye a pa gen okenn ouvèti travay."] Lis Travay [/ list_subpages]

Rezilta a se yon bèl, pwòp lis òdone nan travay yo pibliye yo, ki se paj timoun anba paj karyè yo.

Si pa te gen okenn travay pibliye (pa gen okenn paj pitit), li pral pibliye:

Padon, kounye a nou pa gen okenn ouvèti travay.

Si te gen travay pibliye (paj pitit), li pral pibliye:

Lis Travay:

Ki sa ou panse?

Sit sa a sèvi ak Akismet diminye Spam. Aprann kijan kòmantè ou a trete.