Querying By Post Format
tax_query
argument voor WP_Query
. Als u wilt zoeken naar alle berichten met het citaatformaat, maken we onze WP_Query
zoals dit:$ args = array ('post_type' => 'post', 'tax_query' => array (array ('taxonomy' => 'post_format', 'field' => 'slug', 'terms' => 'post-format -citaat', ) ) ); $ query = new WP_Query ($ args);
Merk op dat in het bovenstaande voorbeeld de term is voorafgegaan door "post-format-". Houd er ook rekening mee dat we een reeks termen kunnen doorgeven aan het argument termen in de tax_query
om op meer dan één formaat te zoeken.
Als u in een paar postformaten veel berichten op uw site heeft, wilt u waarschijnlijk elke indeling markeren. Als u bijvoorbeeld een visuele artiest bent die uw blog gebruikt om uw video's en afbeeldingen te laten zien en postformaten gebruikt, kunt u een menu maken met uw berichten van de formaatvideo en afbeelding afzonderlijk.
De eerste stap is het instellen van een array met argumenten voor WP_Query
, net zoals degene die ik je hierboven heb laten zien, behalve deze keer zonder het specifieke postformaat gespecificeerd in het argument "terms" van de tax_query
en een reeks indelingen, samen met labels die moeten worden gebruikt in de menu-uitvoer.
Hier is wat deze twee matrices eruit zien:
// initial WP_Query args $ args = array ('post_type' => 'post', 'posts_per_page' => 5, 'tax_query' => array (array ('taxonomy' => 'post_format', 'field' => ' slug ',))); // formaten om $ formats te tonen = array (array ('naam' => 'video', 'label' => 'Videos'), array ('name' => 'image', 'label' => 'Foto's' ),);
Met deze twee arrays kunnen we een maken foreach
loop uit de tweede array, om te zoeken naar berichten met het huidige formaat en om een lijst met berichten uit te voeren. Dit houdt in dat in elke iteratie van de lus de termen argument worden toegevoegd met behulp van set ()
, een instantie maken van WP_Query
, doorlopen en vervolgens het argument termen uitschakelen.
Binnenkant van de WP_Query
while-lus die we kunnen gebruiken get_term_link ()
om een link te maken naar de archiefpagina van het postformaat, wat in werkelijkheid een taxonomie-termarchief is. Voor de afzonderlijke berichten kunnen we gebruiken get_permalink ()
om de link naar het bericht te maken. Hier is hoe de loop eruit ziet:
echo '';
Zorg ervoor dat u extra klassen of ID's toevoegt aan de markup om deze generieke code eruit te laten zien als een menu in uw thema en vervang de indelingen die worden weergegeven volgens uw behoeften..
Nu je een menu hebt voor je postformaten, wil je misschien berichten van bepaalde formaten uitsluiten van je hoofdblogindex. Hiermee kunt u uw blog gebruiken als een blog en het menu voor post-opmaak om video's, afbeeldingen, audiobestanden of andere opgemaakte berichten te markeren.
Als u berichten met een bepaalde indeling wilt behouden, moet u een pre_get_post
filter om een toe te voegen tax_query
naar de hoofdvraag. De tax_query
lijkt op degene die ik je al liet zien, maar zal een extra argument hebben om berichten met het formaat uit te sluiten, met behulp van het argument "operator". Door de operator in te stellen op "NOT IN" worden overeenkomstige berichten uitgesloten.
Deze vraag zal ook worden ingepakt in het voorwaardelijke is thuis()
om ervoor te zorgen dat dit alleen van invloed is op de hoofdblogindex.
Hier is wat de actie en callback-functie eruit zien:
add_action ('pre_get_posts', 'slug_no_videos_home'); function slug_no_videos_home ($ query) if ($ query-> is_home () && $ query-> is_main_query ()) $ tax_query = array (array ('taxonomy' => 'post_format', 'field' => 'slug' , 'terms' => 'post-format-video', 'operator' => 'NIET IN',)); $ query-> set ('tax_query', $ tax_query); return $ query;
Zoals u in de callback kunt zien, definiëren we a tax_query
, de ... gebruiken NIET IN
operator en gebruik vervolgens de ingestelde methode om de tax_query
naar de hoofdquery van de blogindex.
Doorheen deze vijfdelige serie, heb je geleerd wat postformaten zijn, hoe je ze kunt toevoegen aan je thema, hoe je ze kunt gebruiken in de loop, ze kunt targeten met aangepaste CSS, bulkupdates kunt maken en ze kunt gebruiken als contentorganisator. gereedschap.
Gewapend met deze kennis, kunt u meer krachtige thema's maken die gegevensportabiliteit een fluitje van een cent maken.