Íme, hogyan hozhat le minden kívánt bejegyzést a WP_Query segítségével

Ha a múltban egyszerű témákat készített, akkor valószínűleg nem merült fel a saját üzenet letöltése. Végül is a WordPress betölti a legfrissebb 10 bejegyzést a főoldalon, és a helyes hozzászólásokat az archívum oldalain. Mi lenne a bonyolultabb forgatókönyvekkel? Mi lenne, ha egyfajta webhelytérképet szeretne, és fel szeretné sorolni az összes hozzászólását és oldal dátum szerint rendezve?


A WP_Query a barátod, ez lehetővé teszi, hogy a kritériumainak megfelelően leveleket húzzon az adatbázisból. Az összes hozzászólást egyetlen kategóriából is lekérheti, amely bizonyos címkéket is tartalmaz. Letöltheti az összes, az előző évben létrehozott oldalt és a hozzá nem tartozó képeket tartalmazó hozzászólásokat.

Ebben a bejegyzésben mélyebben áttekintjük a WP_Query működését – kezdjük el!

Egyéni hurok

Az egyéni lekérdezésekkel való jó munka kulcsa az azoknak az argumentumoknak a elsajátítása, amelyeket átadhat nekik. Mielőtt ezt megnéznénk, készítsünk egy gyorsat "csontváz" felhasználhatjuk a hozzászólások felsorolására. A normál archívum oldalon a hurok így néz ki:

<?php if (have_posts ()): ?>
<?php míg (have_posts ()): the_post () ?>

<?php végül ?>
<?php else: ?>

<?php endif ?>

Ez nagyon jól működik, mert az oldal betöltése előtt a WordPress már lekérdezte a megfelelő hozzászólásokat. Amikor egyéni lekérdezést írunk, szükségünk lesz egy egyedi hurokra. A kód nagyon hasonló, itt van:

<?php
$ args = tömb (
‘post_type’ => ‘Post’,
‘post_status’ => ‘jövő’
);
$ ütemezett = új WP_Query ($ args);

if ($ ütemezett->have_posts ()):
?>
<?php míg ($ ütemezett->have_posts ()): $ ütemezett->A poszt() ?>

<?php végül ?>
<?php else: ?>

<?php endif ?>

Hozzunk létre egy új WordPress lekérdezést a WP_Query osztály használatával, átadva annak paramétereit a szükséges hozzászólások típusának meghatározásához. Ezután meghívjuk a have_posts () és the_post () metódusokat a $ ütemezett objektumunkon.

Ha még nem ismeri az objektumorientált programozást, és nem igazán érti miért, ne aggódjon, továbbra is könnyen használhatja az egyedi lekérdezéseket. A teljes bejegyzés során a $ args tömbre összpontosítunk, amely elég egyértelmű lesz.

Egyszerű érvek

Mint már említettem, a fő "a tudás egésze" a WP_Query érveiben rejlik. Az Kódex felsorolja őket, itt áttekintjük a leghasznosabbat.

Néhány argumentum nagyon egyszerű, például a tag vagy a tag_id paraméter. Az előbbi címkecukkát vesz fel, a később egy címkéket. Számos elemet elválaszthat vesszővel vagy negatív azonosítókat is használhat annak jelzésére, hogy vissza szeretne tölteni a hozzászólásokat nem csatolja az adott címkét.

$ args = tömb (
‘post_type’ => ‘Post’,
‘tag_id’ => ’22, 92,44, -21′
);
$ our_posts = új WP_Query ($ args);

A kódrészlet olyan cikkeket fog beolvasni, amelyekhez az első három címke bármelyikét csatolták, de a negyedik nem. Noha ez a rendszer elég hatékony az egyszerű igények kielégítéséhez, általában a sokkal rugalmasabb taxonómiai lekérdezést használom, amelyet egy kicsit később tárgyalok..

A szerző, szerzőnév, macska, kategórianév, s (keresési kifejezések esetén), post_status, post_type példák néhány egyszerűbb mezőre. Ne feledje, hogy néhány mező, például a post_status, többféle érték használata esetén állapotsorozatot kell átadnia.

$ args = tömb (
‘post_type’ => tömb (‘post’, ‘page’),
‘post_status’ => tömb (‘vázlat’, ‘közzététel’),
‘macska’ => ‘zenevideók’
);
$ our_posts = új WP_Query ($ args);

A fenti példa minden olyan bejegyzést lekér, amely oldalak vagy hozzászólások; vagy közzéteszik, vagy vázlat állapotban vannak, és a zenék vagy videók kategóriájához vannak rendelve. Ezt fel lehet használni a zenével vagy videóval kapcsolatos jelenlegi vagy tervezett tartalom címeinek megjelenítésére.

Taxonómia lekérdezések

Az egyszerű dolgokhoz elegendő az említett érvek felhasználása a kategóriák vagy címkék alapján történő hozzászólások letöltésére, de mi van, ha van egyéni taxonómiája, vagy több paramétert kell kombinálnia? A válasz az tax_query argumentumban rejlik, amely maga is tömb. Nézzünk először egy példát.

$ args = tömb (
‘post_type’ => ‘könyv’,
‘tax_query’ => sor(
sor(
‘taxonómia’ => ‘műfaj’,
‘mező’ => ‘meztelen csiga’,
‘kifejezések’ => tömb (‘scifi’, ‘thriller’),
„üzemeltető” => ‘NEM BENT’,
),
sor(
‘taxonómia’ => ‘szerző’,
‘mező’ => ‘Id’,
‘kifejezések’ => tömb (92, 883, 399),
),
‘kapcsolat’ => ‘ÉS’,
),
);
$ query = new WP_Query ($ args);

Itt beolvasunk néhány hozzászólást a „könyv” bejegyzés típusából, hozzáadva néhány taxonómiai paramétert. A tax_query-en belül definiált két tömb felhasználásával meghatároztuk, hogy szeretnénk húzni azokat a könyveket, amelyeket a szerző 92, 883 vagy 399 írása ír, nem a sci-fi vagy a thriller műfajában. A relációs paraméter meghatározza a két tömb közötti kapcsolatot. Esetünkben „és” kapcsolatok jelentik, hogy mindkét feltételnek teljesülnie kell.

Ha a „vagy” kifejezést használtuk volna, akkor olyan könyveket kaptunk volna, amelyek nem tartoznak a sci-fi vagy a thriller kategóriába, vagy amelyeket a megadott három szerző írt. A sima angol nyelven ez azt jelenti: Szeretném megtekinteni az összes könyvemet, kivéve a sci-fi és a thriller műfajt. Szeretném látni azonban Terry Pratchett, Douglas Adams és Stephen King összes könyvet, műfajtól függetlenül.

Meta lekérdezések

A meta lekérdezések szerkezetében nagyon hasonlóak a taxonómiai lekérdezésekhez, de a post meta táblából származó adatokat használják a hozzászólások szűrésére. Az alábbi kód megjeleníti az összes közzétett hozzászólást, amelyek kiemelt képet tartalmaznak.

$ args = tömb (
‘post_type’ => ‘Post’,
‘meta_query’ => sor(
sor(
‘kulcs’ => ‘_Thumbnail_id’,
‘érték’ => „”,
‘összehasonlítani’ => ‘! =’,
),
),
);
$ query = new WP_Query ($ args);

A WordPress az _thumbnail_id mező használatával tárolja a beküldött kép azonosítóját. Tehát ha az összes hozzászólást lekérjük, ahol a metaérték nem üres, akkor minden olyan üzenetnek végül kell lennie, amelyek kiemelt képet tartalmaznak.

A titok itt az a tulajdonság és típus összehasonlításának ismerete. Használhat sok olyan értéket, amelyeknek ismerniük kell az SQL-t: ‘=’, ‘! =’, ‘>’,’>= ‘,'<‘,'<= ‘,’ LIKE ‘,’ NOT LIKE ‘,’ IN ‘,’ NOT IN ‘,’ BETWEEN ‘,’ NOT BETWEEN ‘,’ EXISTS ‘(a WordPress 3.5-től és újabb verziók) és’ NOT EXISTS ‘(a WordPress 3.5-ből) és fel)

A típus tulajdonság általában akkor fontos, ha számot vagy dátumot szeretne összehasonlítani. A lehetséges értékek: „SZÁM”, „BINARY”, „CHAR”, „DATE”, „DATETIME”, „DECIMAL”, „SIGNEDED”, „TIME”, „UNSIGNED”. Ne feledje, hogy a NUMERIC használatával kell összehasonlítani a számokat, a legtöbb esetben jól kell lennie.

A taxonómiai lekérdezésekhez hasonlóan több követelményt is összerakhat, majd a relációs paraméter segítségével meghatározhatja a közöttük fennálló kapcsolatot.

$ args = tömb (
‘post_type’ => ‘Post’,
‘meta_query’ => sor(
‘kapcsolat’ => ‘VAGY’,
sor(
‘kulcs’ => ‘hangulat’,
‘érték’ => tömb (‘boldog’, ‘félelmetes’),
‘összehasonlítani’ => ‘BAN BEN’,
),
sor(
‘kulcs’ => ‘jövedelem’,
‘érték’ => 500,
‘összehasonlítani’ => ‘>’,
‘type’ => „Számjegy a”
),
),
);
$ query = new WP_Query ($ args);

A fenti példa hipotetikus naplóból származó bejegyzéseket jelenít meg, ahol valami jó történt. Vagy boldognak vagy félelmetesnek éreztem magam, vagy több, mint 500 dollárt kerestem azon a napon.

Dátumparaméterek

A dátumok kissé összetettek lehetnek, de nagyon rugalmasak. Az WP_Query dokumentáció rengeteg példával rendelkezik, ha további információra van szüksége.

Megjegyzés: egy bizonyos időtartamú bejegyzés visszakeresése elég egyszerű. Használhatja az évet, a hónapot, a w (az év hetét), a napot és néhány más paramétert az idő megadásához. Az alábbi kód lekérdezi az összes hozzászólást 2013. márciusától.

$ args = tömb (
‘post_type’ => ‘Post’,
‘év’ => 2013,
‘hónap’ => 3
);
$ query = new WP_Query ($ args);

Ha bonyolultabb időtartományokba akar bejutni, akkor a date_query-t kell használnia. Ez lehetővé teszi a tetszőleges tartományok meglehetősen egyszerű meghatározását egy ismerős tömbformátum használatával. A következő példa – a kódex jóvoltából – megmutatja, hogyan lehet hétköznap 9:00 és 17:00 között írt üzeneteket visszakeresni..

$ args = tömb (
‘post_type’ => ‘Post’,
‘date_query’ => sor(
sor(
‘óra’ => 9,
‘összehasonlítani’ => ‘>=”,
),
sor(
‘óra’ => 17,
‘összehasonlítani’ => ‘<=”,
),
sor(
“nap hét” => tömb (2, 6),
‘összehasonlítani’ => ‘KÖZÖTT’,
),
),
);
$ query = new WP_Query ($ args);

Rendelési eredmények

A lista bemutatásának sorrendje ugyanolyan fontos, mint a benne lévő elemek. Szerencsére a WordPress felkínálja a order_by és a order paramétereket. A megrendelési paraméter meglehetősen egyszerű, az ASC vagy a DESC segítségével növekvő vagy csökkenő sorrendet rendelhet.

A order_by paraméter számos értéket felvehet: ‘nincs’, ‘ID’, ‘szerző’, ‘cím’, ‘név’, ‘típus’, ‘dátum’, ‘módosítva’, ‘szülő’, ‘rand’ , ‘comment_count’, ‘menu_order’, ‘meta_value’, ‘meta_value_num’, ‘post__in’. A meta_érték alapján történő megrendelés különösen hasznos lehet. Ebben az esetben ne felejtse el megadni a meta_key mezőt is.

$ args = tömb (
‘post_type’ => ‘festés’,
‘meta_query’ => sor(
sor(
‘kulcs’ => ‘ár’,
‘érték’ => 50000,
‘összehasonlítani’ => ‘>’,
‘type’ => „Számjegy a”
),
),
‘order_by’ => ‘Meta_value_num’,
‘meta_key’ => ‘ár’
);
$ query = new WP_Query ($ args);

Ez a példa az 50 000 dollár feletti festményeket gyűjti, és ár szerint növekvő sorrendbe rendeli őket. Vegye figyelembe, hogy mivel az ár számként van tárolva, az eredmények megrendelésére a meta_value_num értéket használtam, ellentétben a karakterláncokhoz használt meta_értékkel.

Egy másik megjegyzésért érdemes megrendelés a post__in. Ez a post__in önmagában egy paraméter, lehetővé teszi, hogy meghatározza a beolvasandó postai azonosító tömböt. Alapértelmezés szerint a WordPress dátumok szerint rendeli a hozzászólásokat, a post__in-ben megadott sorrend nem marad megőrizve. Ha a post__in értéket is megrendelésként használja, a WordPress megőrzi a megrendelést.

$ args = tömb (
‘post_type’ => ‘Post’,
‘post__in’ => tömb (23, 441, 12, 322, 34, 33),
‘order_by’ => ‘Post__in’,
);
$ query = new WP_Query ($ args);

Csomagolás fel

Remélem, hogy a WP_Query bevezetéséből kitűnik, hogy ez valóban erős osztály. Ez lehetővé teszi a hozzászólások letöltését a saját kritériumok alapján, WP-szabványú módon. Vessen egy pillantást rá dokumentáció További információkért és néhány nagyszerű tulajdonságért és módszerért ez az osztály kínál a lekérdezés és a hurok manipulálására.

A WP_Query része annak, ami a WordPress-t egy nagyszerű CMS-ként teszi lehetővé – objektumok moduláris és testreszabható módon történő beolvasása az adatbázisból.

Ha bármilyen kérdése van, tudassa velünk a megjegyzésekben!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map