PHP: gebruik die WordPress API om 'n kortkode te bou om subbladsye te lys

WordPress PHP

Ons is tans besig met 'n taamlike ingewikkelde implementering vir 'n ondernemingskliënt. Die webwerf word in WordPress gebou, maar het baie klokkies en fluitjies. Dikwels, as ek hierdie soort werk doen, wil ek die pasgemaakte kode stoor om later weer op ander webwerwe te hergebruik. In hierdie geval het ek gedink dit is so 'n nuttige funksie, ek wil dit met die wêreld deel. Ons gebruik die Avada WordPress-tema met die Fusion Page Builder as 'n ouer tema, en die implementering van 'n hele paar persoonlike kode in ons kind tema.

WordPress het al 'n paar funksies in sy API wat gebruik kan word om subbladsye te lys, soos wp_list_pages en get_pages. Die probleem is dat hulle nie genoeg inligting teruggee as u hoop om 'n lys met 'n klomp inligting dinamies op te stel nie.

Vir hierdie kliënt wou hulle posbeskrywings plaas en die lys van werksgeleenthede word outomaties in dalende volgorde op hul publikasiedatum gegenereer. Hulle wou ook 'n uittreksel van die bladsy vertoon.

Eerstens moes ons uittrekselondersteuning by die bladsymodel voeg. In funksies.php vir hul tema, het ons bygevoeg:

add_post_type_support ('bladsy', 'uittreksel');

Dan moes ons 'n aangepaste kortkode registreer wat die lys van subbladsye, skakels daarna en die uittreksel daarvoor sou genereer. Doen dit, ons moet die WordPress-lus. In funksies.php het ons bygevoeg:

// Lys subbladsye in 'n lysfunksie dknm_list_child_pages ($ atts, $ content = "") {global $ post; $ atts = shortcode_atts (skikking ('ifempty' => 'Geen rekords', 'aclass' => ''), $ atts, 'list_subpages'); $ args = array ('post_type' => 'bladsy', 'posts_per_page' => -1, 'post_parent' => $ post-> ID, 'orderby' => 'publish_date', 'order' => 'DESC' ,); $ ouer = nuwe WP_Query ($ args); as ($ ouer-> have_posts ()) {$ string. = $ inhoud. ' '; terwyl ($ ouer-> have_posts ()): $ parent-> the_post (); $ string. = ' '.get_die_titel ().' '; as (has_excerpt ($ post-> ID)) {$ string. = '-' .get_the_excerpt (); } $ string. = ' '; eindigend; } anders {$ string = ' '. $ atts [' ifempty '].' '; } wp_reset_postdata (); retour $ string; } add_shortcode ('list_subpages', 'dknm_list_child_pages');

Nou kan die kortkode op die hele webwerf geïmplementeer word om die kinderbladsye met 'n skakel en uittreksel te wys. Gebruik:

[list_subpages aclass = "button" ifempty = "Jammer, ons het tans geen werksgeleenthede nie."] Lys van poste [/ lys_subbladsye]

Die resultaat is 'n mooi, skoon, ongeordende lys van die gepubliseerde poste, wat kinderbladsye onder hul loopbaanblad is.

As daar geen werk gepubliseer is nie (geen kinderbladsye nie), sal dit die volgende publiseer:

Jammer, ons het tans geen werksgeleenthede nie.

As daar poste gepubliseer is (kinderbladsye), sal dit die volgende publiseer:

Lys van poste:

Wat dink jy?

Hierdie webwerf gebruik Akismet om spam te verminder. Leer hoe jou opmerking verwerk is.