PHP: Brug WordPress API til at opbygge en kort kode for at angive undersider
Vi arbejder på en ganske kompleks implementering for en virksomhedsklient lige nu. Webstedet bygges i WordPress, men har masser af klokker og fløjter. Når jeg laver denne type arbejde, kan jeg ofte gemme den brugerdefinerede kode til senere genbrug på andre websteder. I dette tilfælde troede jeg, det var en så nyttig funktion, jeg ville dele den med verden. Vi bruger Avada WordPress-tema med Fusion Page Builder som et overordnet tema og implementerer en hel del brugerdefineret kode i vores børnetema.
WordPress har allerede et par funktioner i sin API, der kan bruges til at liste undersider, som wp_list_pages og get_pages. Problemet er, at de ikke returnerer nok information, hvis du håber dynamisk at oprette en liste med en masse information.
For denne kunde ønskede de at skrive jobbeskrivelser og få listen over jobåbninger automatisk genereret i faldende rækkefølge efter deres udgivelsesdato. De ønskede også at vise et uddrag af siden.
Så først måtte vi tilføje uddragssupport til sideskabelonen. I funktioner.php for deres tema tilføjede vi:
add_post_type_support ('side', 'uddrag');
Derefter var vi nødt til at registrere en brugerdefineret kortkode, der ville generere listen over undersider, links til dem og uddraget for dem. Gør dette, vi er nødt til at bruge WordPress Loop. I functions.php tilføjede vi:
// Liste undersider i en listefunktion dknm_list_child_pages ($ atts, $ content = "") {global $ post; $ atts = shortcode_atts (array ('ifempty' => 'Ingen poster', 'aclass' => ''), $ atts, 'list_subpages'); $ args = array ('post_type' => 'side', 'posts_per_page' => -1, 'post_parent' => $ post-> ID, 'orderby' => 'publish_date', 'order' => 'DESC' ,); $ forælder = ny WP_Query ($ args); hvis ($ parent-> have_posts ()) {$ string. = $ content. ' '; mens ($ parent-> have_posts ()): $ parent-> the_post (); $ string. = ' '.get_the_title ().' '; hvis (has_excerpt ($ post-> ID)) {$ string. = '-' .get_the_excerpt (); } $ string. = ' '; i sidste ende; } andet {$ string = ' '. $ atts [' ifempty '].' '; } wp_reset_postdata (); returnere $ string; } add_shortcode ('list_subpages', 'dknm_list_child_pages');
Nu kan kortkoden implementeres overalt på siden for at vise børnesiderne med et link og et uddrag. Anvendelse:
[list_subpages aclass = "button" ifempty = "Vi beklager, vi har i øjeblikket ingen ledige stillinger."] Liste over job [/ list_subpages]
Resultatet er en pæn, ren ikke-ordnet liste over de offentliggjorte job, som er børnesider under deres karriereside.
Hvis der ikke blev offentliggjort nogen job (ingen underordnede sider), vil den offentliggøre:
Beklager, vi har i øjeblikket ingen ledige stillinger.
Hvis der blev offentliggjort job (underordnede sider), vil det offentliggøre:
Liste over job:
- Sidste børneside - Uddrag fra børnesiden
- Næste barneside - Uddrag fra børnesiden
- Næste barneside - Uddrag fra børnesiden