Snelle verdeling
- query_posts - gebruik niet behalve in zeldzame randgevallen
- pre_get_posts - gebruik deze als u de standaardquery op een pagina wilt wijzigen
- nieuwe WP_Query - gebruik deze om andere resultaten te krijgen dan de hoofdquery
- get_posts - hetzelfde als WP_Query, geeft in plaats daarvan alleen resultaten in array-indeling
query_posts
Het gebruik van query_posts wordt niet meer aanbevolen. Er zijn betere manieren om te bereiken wat u probeert te bereiken. Probeert u de hoofdvraag te wijzigen? Gebruik de actie pre_get_posts om de resultaten te filteren (zie hieronder). query_posts gooit de oorspronkelijke hoofdquery naar de zijkant (nadat deze al is uitgevoerd) en maakt een nieuwe hoofdquery. Het vervangt alle post-gerelateerde globale variabelen en resulteert in een volledig nieuwe database-aanroep. Er is gewoon geen reden om de bestaande zoekopdracht niet alleen te wijzigen. Ik weet zeker dat er een aantal randgevallen zijn waar het zou moeten worden gebruikt, maar ik kan er geen bedenken op de top van mijn hoofd. Gebruik een van de onderstaande opties, want deze zullen waarschijnlijk beter geschikt zijn.
pre_get_posts
Dit is een filter. Hiermee wordt de hoofdquery gewijzigd in een pagina. We willen bijvoorbeeld het aantal resultaten wijzigen dat op de startpagina wordt geretourneerd …
functie tj_change_home_number ($ query) {if (is_home ()) {$ query-> set ('posts_per_page', 2); terug te keren; }} voeg extra toe ('pre_get_posts', 'tj_change_home_number');
Dit zou de hoofdvraag wijzigen om slechts 2 berichten op de startpagina te retourneren.
WP_Query
De hoofdquery voor elke sjabloon die wordt aangeroepen, is een exemplaar van WP_Query . Wanneer u interactie hebt met de globale postvariabelen binnen een sjabloon, is dat het resultaat van WP_Query . De use cases hiervoor zijn talrijk, maar net als bij get_posts zou ik een nieuwe WP_Query verklaren om gerelateerde posts te trekken, iets in die richting. Houd er rekening mee dat als u de functie the_post () uitvoert terwijl u een nieuwe WP_Query doorloopt, u de functie wp_reset_postdata () uitvoert nadat u klaar bent met lussen om de globale postgegevens opnieuw in te stellen naar de oorspronkelijke hoofdquery .
get_posts
Door get_posts te gebruiken, roept u in feite een nieuwe WP_Query aan en krijgt u die informatie terug in een matrixindeling . Ik gebruik meestal get_posts wanneer ik berichten retourneer voor een schuifregelaar op de startpagina of een aantal gerelateerde berichten in een zijbalk bel. WP_Query kan net zo gemakkelijk worden gebruikt, maar het is een goede manier om een reeks berichten te ontvangen zonder de globale postvariabelen te wijzigen. Naar mijn mening is dit het meest simplistische en gemakkelijkst te gebruiken. Er zijn geen functieaanroepen nodig nadat uw gegevens zijn geretourneerd, u loopt gewoon door een array.
Dit kan een beetje verwarrend zijn, dus stel gerust vragen in de reacties hieronder.
Referentie:
WP_Query
pre_get_posts
query_posts
get_posts