Anonim

Γρήγορη κατανομή

  • query_posts - μη χρησιμοποιείτε εκτός από περιπτώσεις σπάνιων περιπτώσεων
  • pre_get_posts - χρησιμοποιήστε εάν θέλετε να αλλάξετε το προεπιλεγμένο ερώτημα σε μια σελίδα
  • νέο WP_Query - χρησιμοποιήστε για να λάβετε διαφορετικά αποτελέσματα από το κύριο ερώτημα
  • get_posts - ίδιο με το WP_Query, απλώς επιστρέφει αποτελέσματα σε μορφή πίνακα
  • query_posts

    Η χρήση του query_posts δεν συνιστάται πλέον. Υπάρχουν καλύτεροι τρόποι για να ολοκληρώσετε αυτό που προσπαθείτε να ολοκληρώσετε. Προσπαθώντας να αλλάξω το κύριο ερώτημα; Χρησιμοποιήστε την ενέργεια pre_get_posts για να φιλτράρετε τα αποτελέσματα (δείτε παρακάτω). Το query_posts ρίχνει το αρχικό κύριο ερώτημα στο πλάι (αφού έχει ήδη τρέξει) και δημιουργεί ένα νέο κύριο ερώτημα. Αντικαθιστά όλες τις καθολικές μεταβλητές που σχετίζονται με τη μετάδοση και οδηγεί σε μια εντελώς νέα κλήση βάσης δεδομένων. Δεν υπάρχει λόγος να μην αλλάξετε μόνο το υπάρχον ερώτημα. Είμαι βέβαιος ότι υπάρχουν κάποιες περιπτώσεις όπου θα πρέπει να χρησιμοποιηθεί, αλλά δεν μπορώ να σκεφτώ τίποτα από την κορυφή του κεφαλιού μου. Χρησιμοποιήστε μία από τις παρακάτω επιλογές, καθώς είναι περισσότερο πιθανό να ταιριάζουν καλύτερα.

    pre_get_posts

    Αυτό είναι ένα φίλτρο. Αυτό τροποποιεί το κύριο ερώτημα σε μια σελίδα. Έτσι, για παράδειγμα, θέλουμε να αλλάξουμε τον αριθμό των αποτελεσμάτων που επιστρέφονται στην αρχική σελίδα …

συνάρτηση tj_change_home_number ($ query) {if (is_home ()) {$ query-> set ('posts_per_page', 2); ΕΠΙΣΤΡΟΦΗ; }} add_action ('pre_get_posts', 'tj_change_home_number').

Αυτό θα άλλαζε το κύριο ερώτημα για να επιστρέψει μόνο 2 θέσεις στην αρχική σελίδα.

WP_Query

Το κύριο ερώτημα σε οποιοδήποτε πρότυπο που ονομάζεται είναι μια παρουσία του WP_Query . Όταν αλληλεπιδράτε με τις μεταβλητές καθολικής μετάδοσης μέσα σε ένα πρότυπο, αυτό είναι το αποτέλεσμα του WP_Query . Οι περιπτώσεις χρήσης για αυτό είναι πολλές, αλλά όπως και με το get_posts, θα δηλώσω ένα νέο WP_Query με σκοπό να τραβήξει σχετικές θέσεις, κάτι ανάλογο αυτών των γραμμών. Λάβετε υπόψη ότι εάν εκτελέσετε τη συνάρτηση the_post () ενώ βγάζετε ένα νέο WP_Query, εκτελέστε τη συνάρτηση wp_reset_postdata () αφού τελειώσετε για να επαναφέρετε τα γενικά δεδομένα μετά την αρχική κύρια ερώτηση.

get_posts

Χρησιμοποιώντας το get_posts, καλείτε ουσιαστικά ένα νέο WP_Query και παίρνετε αυτές τις πληροφορίες που επιστρέφονται σε μια μορφή πίνακα. Θα χρησιμοποιώ συνήθως get_posts όταν επιστρέφω θέσεις για ένα ρυθμιστικό στην αρχική σελίδα ή καλώντας ορισμένες σχετικές θέσεις σε μια πλευρική γραμμή. Το WP_Query θα μπορούσε να χρησιμοποιηθεί εξίσου εύκολα, αλλά είναι ένας καλός τρόπος για να λάβετε μια σειρά από αναρτήσεις χωρίς να τροποποιήσετε τις μεταβλητές μετά τη σφαιρική μετάδοση. Κατά την άποψή μου, το πιο απλοϊκό και ευκολότερο στη χρήση. Δεν υπάρχουν απαραίτητες κλήσεις λειτουργίας μετά την επιστροφή των δεδομένων σας, απλώς βρόχου μέσω ενός πίνακα.

Αυτό μπορεί να είναι λίγο συγκεχυμένο, οπότε μπορείτε να κάνετε ερωτήσεις στα παρακάτω σχόλια.

Αναφορά:
WP_Query
pre_get_posts
query_posts
get_posts

Wp_query vs query_posts vs get_posts vs pre_get_posts