Anonim

Ripartizione rapida

  • query_posts : non utilizzare se non in rari casi limite
  • pre_get_posts : utilizzare se si desidera modificare la query predefinita in una pagina
  • nuovo WP_Query : utilizzare per ottenere risultati diversi dalla query principale
  • get_posts - uguale a WP_Query, restituisce invece i risultati in formato array
  • query_posts

    L'uso di query_posts non è più raccomandato. Ci sono modi migliori per realizzare ciò che stai cercando di realizzare. Cerchi di modificare la query principale? Utilizzare l'azione pre_get_posts per filtrare i risultati (vedere di seguito). query_posts lancia la query principale originale sul lato (dopo che è già stata eseguita) e crea una nuova query principale. Sostituisce tutte le variabili globali correlate al post e genera una chiamata al database completamente nuova. Semplicemente non c'è motivo per cui non si debba semplicemente modificare la query esistente. Sono sicuro che ci sono alcuni casi limite in cui dovrebbe essere usato, ma non riesco a pensare a nessun altro nella parte superiore della mia testa. Utilizzare una delle opzioni di seguito, poiché molto probabilmente saranno più adatte.

    pre_get_posts

    Questo è un filtro Ciò modifica la query principale in una pagina. Quindi, ad esempio, vogliamo cambiare il numero di risultati che vengono restituiti sulla homepage …

funzione tj_change_home_number ($ query) {if (is_home ()) {$ query-> set ('posts_per_page', 2); ritorno; }} add_action ('pre_get_posts', 'tj_change_home_number');

Ciò altererebbe la query principale per restituire solo 2 post nella home page.

WP_Query

La query principale su qualsiasi modello chiamato è un'istanza di WP_Query . Quando interagisci con le variabili di post globali all'interno di un modello, questo è il risultato di WP_Query . I casi d'uso per questo sono numerosi, ma come per get_posts, dichiarerei un nuovo WP_Query allo scopo di estrarre messaggi correlati, qualcosa del genere. Tieni presente che se esegui la funzione the_post () mentre esegui il ciclo attraverso un nuovo WP_Query, esegui la funzione wp_reset_postdata () dopo aver eseguito il ciclo per ripristinare i dati globali dei post sulla query principale originale.

get_posts

Utilizzando get_posts, si sta effettivamente chiamando un nuovo WP_Query e si ottengono le informazioni restituite in un formato array. In genere userò get_posts quando restituirò post per un dispositivo di scorrimento sulla home page o chiamerò alcuni post correlati in una barra laterale. WP_Query potrebbe essere usato altrettanto facilmente, ma è un buon modo per ricevere una serie di post senza modificare le variabili globali dei post. Dal mio punto di vista è il più semplice e facile da usare. Non sono necessarie chiamate di funzione dopo la restituzione dei dati, ma solo il looping di un array.

Questo può essere un po 'confuso, quindi sentiti libero di porre domande nei commenti qui sotto.

Riferimento:
WP_Query
pre_get_posts
query_posts
get_posts

Wp_query vs query_posts vs get_posts vs pre_get_posts