WordPress: Az egyéni bejegyzéstípusú bejegyzések ábécé szerinti rendezése
Az új témával (és gyermektémával), amelyet megvalósítottam Martech Zone, újra kellett építenem és újra kellett kódolnom az általam készített egyéni bejegyzéstípust Mozaikszavak. A kódot úgy optimalizáltam, hogy beilleszthessek néhány további egyéni mezőt, és újra kell terveznem az archívumot és a taxonómiai sablonokat, hogy jobban megjelenítsem a felsorolt betűszavakat.
Legutóbbi témámban (amelynek a fejlesztői leállították a támogatást) ezek az oldalak elég nagy figyelmet kaptak, mert jól dokumentáltak, és még a mozaikszóhoz kapcsolódó cikkeket is tartalmaztak. Továbbra is áttelepítem ezt a funkcionalitást az új webhelyre, és a mozaikszó definíciójának megjelenítésére is szeretnék lebegni, ahelyett, hogy a látogató a mozaikszó hivatkozására kattintana. Elég erről…
Egyéni bejegyzéstípus rendezés
Mivel a WordPress-t eredetileg bloghasználatra tervezték, minden bejegyzéstípus alapértelmezése (beleértve az egyéni bejegyzéstípust is) a bejegyzések fordított időrendi sorrendje. Noha ez működik hírek és cikkek esetében, nem előnyös olyan dolgok esetében, mint a szószedet vagy a mozaikszók listája. Azt akarom, hogy a betűszavaim alfanumerikusan legyenek rendezve, nem a WordPressbe való beírásuk dátuma szerint.
Mint a WordPress gyakorlatilag minden funkciója, ez is könnyen testreszabható a WordPress API-val. Az én functions.php fájlt a gyermek témában, hozzáadtam a következő kódot:
add_action( 'pre_get_posts', function ( $query ) {
if ( $query->is_archive() && $query->is_main_query() ) {
if ( get_query_var( 'post_type' ) == 'acronym' ) {
$query->set( 'order', 'ASC' );
$query->set( 'orderby', 'title' );
};
};
} );
A pre_get_posts A függvény egy olyan művelet, amely a bejegyzések lekérdezésekor végrehajtódik. A fenti kódban biztosítani tudom, hogy minden lekérdezés a egyéni postatípus of betűszó kifejezetten úgy van beállítva, hogy a cím szerint legyen rendezve növekvő sorrendben.
Ez nem csak az archívum és a taxonómiai oldalak kimenetében állítja be ezt a sorrendet, hanem még az egyéni bejegyzéstípust is alfanumerikusan rendezi a WordPress adminisztrációs panelén.
Mivel az alapértelmezett lekérdezési paramétereket állítja be, más változókat is hozzáadhat, például a visszakeresendő rekordok számát (
posts_per_page). A mozaikszók esetében 25 rekordot adok vissza egyszerre, ahol alapértelmezés szerint 10 a webhely többi részén.Ha csak szeretné közzétenni az egyéni bejegyzéstípust ábécé sorrendben az archívum sablonján, de nem a WordPress adminisztrációs panelén, frissítheti a kódot a következőre:
function acronym_archive_orderby_title($query) {
// Check if it's the main query, an archive page, and the post type is 'acronym'
if ($query->is_main_query() && is_post_type_archive('acronym') && !is_admin()) {
// Order by title alphabetically
$query->set('orderby', 'title');
$query->set('order', 'ASC');
}
}
add_action('pre_get_posts', 'acronym_archive_orderby_title');
Az egyéni bejegyzéstípusok segítségével jelentősen kibővítheti webhelye képességeit… és mindez megtehető néhány egyszerű kóddal a gyermektémán belül (vagy az alaptémán belül), anélkül, hogy bármilyen bővítményre lenne szüksége. Valójában azt javaslom, hogy ne használjon beépülő modulokat, mivel ezek gyakran megnövelik a számítási többletterhelést, ami lelassíthatja webhelyét. Jelenleg egy ügyféloldalon dolgozom, ahol szeretnének álláslehetőségeket beépíteni… és ez a kód nekik is jól jön!