Δείτε πώς μπορείτε να ανακτήσετε οποιαδήποτε δημοσίευση θέλετε με το WP_Query

Δείτε πώς μπορείτε να ανακτήσετε οποιαδήποτε δημοσίευση θέλετε με το WP_Query

Δείτε πώς μπορείτε να ανακτήσετε οποιαδήποτε δημοσίευση θέλετε με το WP_Query
СОДЕРЖАНИЕ
02 июня 2020

Εάν έχετε δημιουργήσει απλά θέματα στο παρελθόν, πιθανότατα δεν ήταν ανάγκη να ανακτήσετε αναρτήσεις μόνοι σας. Σε τελική ανάλυση, το WordPress φορτώνει τις πιο πρόσφατες 10 αναρτήσεις στην κύρια σελίδα και τις σωστές αναρτήσεις σε σελίδες αρχειοθέτησης. Τι γίνεται με πιο περίπλοκα σενάρια; Τι γίνεται αν θέλετε έναν χάρτη ιστότοπου των ειδών και θέλετε να αναφέρετε όλες τις αναρτήσεις σας και σελίδες παραγγελίες ανά ημερομηνία?


Το WP_Query είναι ο φίλος σας, σας επιτρέπει να τραβάτε αναρτήσεις από τη βάση δεδομένων σύμφωνα με τα κριτήριά σας. Μπορείτε να ανακτήσετε όλες τις αναρτήσεις από μια μεμονωμένη κατηγορία που περιέχει και συγκεκριμένες ετικέτες. Θα μπορούσατε να ανακτήσετε όλες τις σελίδες που δημιουργήθηκαν πέρυσι και αναρτήσεις που δεν έχουν επιλεγμένη εικόνα.

Σε αυτήν την ανάρτηση θα σας δώσω μια αναλυτική ματιά στον τρόπο λειτουργίας του WP_Query – ας ξεκινήσουμε!

Ένας προσαρμοσμένος βρόχος

Το κλειδί για την καλή λειτουργία με προσαρμοσμένα ερωτήματα είναι η εξειδίκευση των επιχειρημάτων που μπορείτε να μεταβιβάσετε σε αυτά. Πριν το εξετάσουμε αυτό, ας δημιουργήσουμε ένα γρήγορο "σκελετός" μπορούμε να χρησιμοποιήσουμε για τη λίστα αναρτήσεων. Ο βρόχος σε μια κανονική σελίδα αρχειοθέτησης θα μοιάζει με αυτό:

<?php εάν (has_posts ()): ?>
<?php while (has_posts ()): το_post () ?>

<?php εν τω μεταξύ ?>
<?php αλλιώς: ?>

<?php endif ?>

Αυτό λειτουργεί καλά γιατί πριν από τη φόρτωση της σελίδας, το WordPress έχει ήδη ανακτήσει τις σωστές δημοσιεύσεις. Όταν γράφουμε ένα προσαρμοσμένο ερώτημα, θα χρειαζόμαστε έναν προσαρμοσμένο βρόχο. Ο κωδικός είναι πολύ παρόμοιος, ακολουθεί:

<?php
$ args = πίνακας (
“post_type” => ‘Θέση’,
‘post_status’ => ‘μελλοντικός’
)
$ προγραμματισμένο = νέο WP_Query ($ args);

εάν ($ προγραμματισμένο->has_posts ()):
?>
<?php ενώ (προγραμματισμένο $->has_posts ()): $ προγραμματισμένο->η δημοσίευση() ?>

<?php εν τω μεταξύ ?>
<?php αλλιώς: ?>

<?php endif ?>

Δημιουργούμε ένα νέο ερώτημα WordPress χρησιμοποιώντας την κλάση WP_Query, περνώντας τις παραμέτρους για να καθορίσουμε τους τύπους αναρτήσεων που χρειαζόμαστε. Στη συνέχεια καλούμε τις μεθόδους has_posts () και the_post () στο προγραμματισμένο αντικείμενο $.

Εάν είστε νέοι στον αντικειμενοστραφή προγραμματισμό και δεν καταλαβαίνετε πραγματικά γιατί, μην ανησυχείτε, μπορείτε ακόμα να χρησιμοποιήσετε εύκολα προσαρμοσμένα ερωτήματα. Θα επικεντρωθούμε στη συστοιχία $ args σε όλη την ανάρτηση που θα είναι αρκετά απλή.

Απλά επιχειρήματα

Όπως ανέφερα, το κύριο "σώμα της γνώσης" όταν πρόκειται για το WP_Query βρίσκεται στα επιχειρήματά του. ο Κώδιξ απαριθμεί όλα αυτά, θα ρίξουμε μια ματιά στα πιο χρήσιμα εδώ.

Ορισμένα επιχειρήματα είναι αρκετά απλά, όπως η παράμετρος tag ή tag_id. Ο πρώτος παίρνει ένα slug ετικέτας, αργότερα ένα αναγνωριστικό ετικέτας. Μπορείτε επίσης να διαχωρίσετε πολλά στοιχεία με κόμματα ή να χρησιμοποιήσετε αρνητικά αναγνωριστικά για να υποδείξετε ότι θέλετε να ανακτήσετε αναρτήσεις δεν να επισυνάψετε τη συγκεκριμένη ετικέτα.

$ args = πίνακας (
“post_type” => ‘Θέση’,
‘tag_id’ => ’22, 92,44, -21 ‘
)
$ our_posts = νέο WP_Query ($ args);

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

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

$ args = πίνακας (
“post_type” => πίνακας («ανάρτηση», «σελίδα»),
‘post_status’ => πίνακας (‘πρόχειρο’, ‘δημοσίευση’),
«γάτα» => ‘μουσικά βίντεο’
)
$ our_posts = νέο WP_Query ($ args);

Το παραπάνω παράδειγμα ανακτά τυχόν αναρτήσεις που είναι είτε σελίδες, δημοσιεύσεις. είτε δημοσιεύονται είτε σε κατάσταση πρόχειρου και έχουν εκχωρηθεί είτε η κατηγορία μουσικής ή βίντεο. Αυτό θα μπορούσε να χρησιμοποιηθεί για την εμφάνιση των τίτλων οποιουδήποτε τρέχοντος ή προγραμματισμένου περιεχομένου που σχετίζεται με μουσική ή βίντεο.

Ερωτήματα ταξονομίας

Για απλά πράγματα, αρκεί να χρησιμοποιήσετε τα αναφερόμενα ορίσματα για να ανακτήσετε αναρτήσεις βάσει κατηγοριών ή ετικετών, αλλά τι γίνεται αν έχετε προσαρμοσμένη ταξινόμηση ή πρέπει να συνδυάσετε πολλές παραμέτρους; Η απάντηση βρίσκεται στο όρισμα tax_query που είναι ο ίδιος ένας πίνακας. Ας δούμε πρώτα ένα παράδειγμα.

$ args = πίνακας (
“post_type” => ‘Βιβλίο’,
“tax_query” => πίνακας(
πίνακας(
“ταξινόμηση” => ‘είδος’,
“πεδίο” => ‘γυμνοσάλιαγκας’,
“όροι” => πίνακας (‘scifi’, ‘θρίλερ’),
«χειριστής» => «ΟΧΙ ΣΕ»,
),
πίνακας(
“ταξινόμηση” => ‘συντάκτης’,
“πεδίο” => ‘ταυτότητα’,
“όροι” => συστοιχία (92, 883, 399),
),
«σχέση» => ‘ΚΑΙ’,
),
)
$ query = νέο WP_Query ($ args);

Εδώ ανακτά μερικές δημοσιεύσεις από τον τύπο δημοσίευσης «βιβλίο», προσθέτοντας κάποιες παραμέτρους ταξονομίας. Χρησιμοποιώντας δύο πίνακες που ορίζονται στο φορολογικό ερώτημα, έχουμε προσδιορίσει ότι θέλουμε να τραβήξουμε βιβλία γραμμένα από τους συγγραφείς 92, 883 ή 399 τα οποία είναι δεν στο είδος sci-fi ή θρίλερ. Η παράμετρος σχέσης καθορίζει τη σχέση μεταξύ των δύο συστοιχιών. Στην περίπτωσή μας είναι σχέσεις «και» που σημαίνει ότι πρέπει να πληρούνται και οι δύο προϋποθέσεις.

Εάν χρησιμοποιούσαμε «ή» θα είχαμε ανακτήσει βιβλία που είτε δεν ανήκουν στην κατηγορία επιστημονικής φαντασίας ή θρίλερ είτε γράφονται από τους συγκεκριμένους τρεις συγγραφείς. Στα απλά αγγλικά αυτό σημαίνει: Θέλω να δω όλα τα βιβλία μου εκτός από το είδος της επιστημονικής και θρίλερ. Ωστόσο, θέλω να δω όλα τα βιβλία των Terry Pratchett, Douglas Adams και Stephen King, ανεξάρτητα από το είδος.

Μετα-ερωτήματα

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

$ args = πίνακας (
“post_type” => ‘Θέση’,
‘meta_query’ => πίνακας(
πίνακας(
‘κλειδί’ => “_thumbnail_id”,
“τιμή” => »,
“σύγκριση” => “! =”,
),
),
)
$ query = νέο WP_Query ($ args);

Το WordPress αποθηκεύει το αναγνωριστικό της επιλεγμένης εικόνας για μια ανάρτηση χρησιμοποιώντας το πεδίο _thumbnail_id. Επομένως, εάν ανακτήσουμε όλες τις αναρτήσεις όπου αυτή η μετα-τιμή δεν είναι κενή, θα πρέπει να καταλήξουμε σε όλες τις αναρτήσεις που έχουν χαρακτηρισμένη εικόνα.

Το μυστικό εδώ είναι να μάθετε πώς να χρησιμοποιήσετε την ιδιότητα και τον τύπο σύγκρισης. Μπορείτε να χρησιμοποιήσετε ένα πλήθος τιμών που θα πρέπει να γνωρίζετε από το SQL: ‘=’, ‘! =’, ‘>«,»>= “,”<«,»<= ‘,’ LIKE ‘,’ NOT LIKE ‘,’ IN ‘,’ NOT IN ‘,’ ANTWEEN ‘,’ NOT ANWEEN ‘,’ EXISTS ‘(από WordPress 3.5 και άνω) και’ NOT EXISTS ‘(από WordPress 3.5 και πάνω)

Η ιδιότητα τύπου είναι συνήθως σημαντική όταν θέλετε να συγκρίνετε αριθμούς ή ημερομηνίες. Πιθανές τιμές είναι «ΑΡΙΘΜΟΣ», «ΔΥΝΑΜΙΚΟ», «CHAR», «ΗΜΕΡΟΜΗΝΙΑ», «ΗΜΕΡΟΜΗΝΙΑ», «ΔΗΜΙΟΥΡΓΙΑ», «ΥΠΟΓΡΑΦΗ», «ΧΡΟΝΟΣ», «ΑΠΟΓΡΑΦΗ». Μην ξεχνάτε να χρησιμοποιείτε το NUMERIC κατά τη σύγκριση αριθμών, στις περισσότερες άλλες περιπτώσεις θα πρέπει να είστε εντάξει.

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

$ args = πίνακας (
“post_type” => ‘Θέση’,
‘meta_query’ => πίνακας(
«σχέση» => ‘Ή’,
πίνακας(
‘κλειδί’ => ‘διάθεση’,
“τιμή” => συστοιχία («χαρούμενος», «φοβερός»),
“σύγκριση” => ‘ΣΕ’,
),
πίνακας(
‘κλειδί’ => ‘εισόδημα’,
“τιμή” => 500,
“σύγκριση” => “>”,
«τύπος» => ‘ΑΡΙΘΜΗΤΙΚΟΣ’
),
),
)
$ query = νέο WP_Query ($ args);

Το παραπάνω παράδειγμα θα εμφανίζει αναρτήσεις από ένα υποθετικό ημερολόγιο όπου συνέβη κάτι καλό. Ένιωσα χαρούμενος ή φοβερός ή έκανα περισσότερα από 500 $ εκείνη την ημέρα.

Παράμετροι ημερομηνίας

Οι ημερομηνίες μπορεί να είναι λίγο περίπλοκες, αλλά είναι πολύ ευέλικτες. ο Τεκμηρίωση WP_Query έχει πολλά παραδείγματα εάν χρειάζεστε περισσότερες πληροφορίες.

Η ανάκτηση αναρτήσεων από μια συγκεκριμένη ώρα είναι πολύ εύκολη. Μπορείτε να χρησιμοποιήσετε το έτος, τον μήνα, την εβδομάδα (εβδομάδα του έτους), την ημέρα και μερικές άλλες παραμέτρους για να καθορίσετε μια ώρα. Ο παρακάτω κώδικας θα ανακτήσει όλες τις αναρτήσεις από τον Μάρτιο του 2013.

$ args = πίνακας (
“post_type” => ‘Θέση’,
«έτος» => 2013,
“μήνας” => 3
)
$ query = νέο WP_Query ($ args);

Αν θέλετε να μπείτε σε πιο περίπλοκα χρονικά διαστήματα, θα πρέπει να χρησιμοποιήσετε το date_query. Αυτό σας επιτρέπει να καθορίσετε αυθαίρετα εύρη πολύ εύκολα, χρησιμοποιώντας μια γνωστή μορφή πίνακα. Το ακόλουθο παράδειγμα – ευγενική προσφορά του Codex – δείχνει πώς μπορείτε να ανακτήσετε αναρτήσεις που γράφτηκαν μεταξύ 09:00 και 17:00 τις καθημερινές.

$ args = πίνακας (
“post_type” => ‘Θέση’,
‘date_query’ => πίνακας(
πίνακας(
«ώρα» => 9,
“σύγκριση” => “>= ‘,
),
πίνακας(
«ώρα» => 17,
“σύγκριση” => “<= ‘,
),
πίνακας(
“dayofweek” => πίνακας (2, 6),
“σύγκριση” => ‘ΜΕΤΑΞΥ’,
),
),
)
$ query = νέο WP_Query ($ args);

Αποτελέσματα παραγγελίας

Η σειρά με την οποία παρουσιάζεται μια λίστα είναι εξίσου σημαντική με τα στοιχεία μέσα. Ευτυχώς το WordPress μας προσφέρει τις παραμέτρους order_by και order. Η παράμετρος παραγγελίας είναι αρκετά απλή, μπορείτε να χρησιμοποιήσετε ASC ή DESC για να παραγγείλετε αύξουσα ή φθίνουσα.

Η παράμετρος order_by μπορεί να λάβει πολλές τιμές: «κανένας», «αναγνωριστικό», «συγγραφέας», «τίτλος», «όνομα», «τύπος», «ημερομηνία», «τροποποιημένο», «γονικό», «rand» , ‘comment_count’, ‘menu_order’, ‘meta_value’, ‘meta_value_num’, ‘post__in’. Η παραγγελία μέσω meta_value μπορεί να είναι ιδιαίτερα χρήσιμη. Σε αυτήν την περίπτωση, μην ξεχάσετε να καθορίσετε και το πεδίο meta_key.

$ args = πίνακας (
“post_type” => ‘ζωγραφική’,
‘meta_query’ => πίνακας(
πίνακας(
‘κλειδί’ => ‘τιμή’,
“τιμή” => 50000,
“σύγκριση” => “>”,
«τύπος» => ‘ΑΡΙΘΜΗΤΙΚΟΣ’
),
),
‘order_by’ => «meta_value_num»,
‘meta_key’ => ‘τιμή’
)
$ query = νέο WP_Query ($ args);

Αυτό το παράδειγμα ανακτά πίνακες με αξία άνω των 50.000 $ και τους παραγγέλνει να αυξάνεται ανά τιμή. Σημειώστε ότι δεδομένου ότι η τιμή αποθηκεύεται ως αριθμός χρησιμοποίησα το meta_value_num για να παραγγείλω τα αποτελέσματα, σε αντίθεση με το meta_value που θα χρησιμοποιείται για συμβολοσειρές.

Μια άλλη παραγγελία που αξίζει να αναφερθεί είναι το post__in. Αυτό το post__in είναι μια παράμετρο από μόνη της, σας επιτρέπει να καθορίσετε έναν πίνακα αναγνωριστικών ανάρτησης για ανάκτηση. Από προεπιλογή, το WordPress παραγγέλνει αναρτήσεις κατά ημερομηνία, η παραγγελία που καθορίσατε στο post__in δεν διατηρείται. Εάν χρησιμοποιείτε και το post__in ως παραγγελία ανά αξία, το WordPress θα διατηρήσει την παραγγελία.

$ args = πίνακας (
“post_type” => ‘Θέση’,
“post__in” => συστοιχία (23, 441, 12, 322, 34, 33),
‘order_by’ => “post__in”,
)
$ query = νέο WP_Query ($ args);

Τυλίγοντας

Ελπίζω ότι από αυτήν την εισαγωγή στο WP_Query είναι σαφές ότι πρόκειται για μια ισχυρή κατηγορία. Σας επιτρέπει να ανακτήσετε αναρτήσεις χρησιμοποιώντας τα δικά σας κριτήρια με τρόπο WP-standard. Ρίξτε μια ματιά σε αυτό τεκμηρίωση για περισσότερες πληροφορίες και μερικές εξαιρετικές ιδιότητες και μεθόδους που προσφέρει αυτή η τάξη για χειρισμό του ερωτήματος και του βρόχου.

Το WP_Query είναι ένα μέρος αυτού που κάνει το WordPress ένα μεγάλο γενικό CMS – τη δυνατότητα ανάκτησης αντικειμένων από τη βάση δεδομένων με αρθρωτό και προσαρμόσιμο τρόπο.

Αν έχετε απορίες, ενημερώστε μας στα σχόλια!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Это интересно
    Adblock
    detector