Szokásunkhoz híven hozzunk létre egy .php
fájlt az mu-plugins mappánkban, mely kapja a keresztségben a roppant fantáziadús filter-unicorns-by-taxonomies.php
nevet, az alábbi tartalommal:

Bejegyzések szűrése WordPress-ben kategória szerint
|
Olvasási idő:
1
perc
Ha már rendeltünk egyedi taxonómiát az egyedi bejegyzéstípusunkhoz, praktikus lenne ez alapján szűrni őket - ez a snippet pedig ebben lesz segítségünkre.
php
<?php
/*
Plugin Name: Filter unicorns by taxonomies
Plugin URI: https://www.webmenedzser.hu
Description: Filter unicorns by the taxonomies attached to the post type.
Version: 1.0
Author: Radics Ottó
Author URI: https://www.webmenedzser.hu
License: GPL2
*/
function filter_unicorns_by_taxonomy( $post_type ) {
if ( 'unicorn' !== $post_type )
return;
// a post type-hoz tartozó taxonómia fajták lekérése
$taxonomies = get_object_taxonomies('unicorn');
if ($taxonomies) {
foreach ( $taxonomies as $taxonomy ) {
$taxonomy_obj = get_taxonomy( $taxonomy );
if ($taxonomy_obj) {
$taxonomy_name = $taxonomy_obj->labels->name;
// mindegyik taxonómiához készítünk egy legördülő listát
echo "<select name='{$taxonomy}' id='{$taxonomy}' class='postform'>";
echo '<option value="">--- ' . $taxonomy_name . ' ---</option>';
// összeszedjük az adott taxonómiához tartozó taxonómiaelemeket
$terms = get_terms(
array(
'taxonomy' => $taxonomy,
'hide_empty' => false,
)
);
if ($terms) {
foreach ( $terms as $term ) {
// betesszük a legördülő listába a taxonómia elemeket
printf(
'<option value="%1$s" %2$s>%3$s (%4$s)</option>',
$term->slug,
( ( isset( $_GET[$taxonomy] ) && ( $_GET[$taxonomy] == $term->slug ) ) ? ' selected="selected"' : '' ),
$term->name,
$term->count
);
}
// lezárjuk a legördülő listát
echo '</select>';
}
}
}
}
}
add_action( 'restrict_manage_posts', 'filter_unicorns_by_taxonomy' , 10, 2);
Felülről lefelé haladva sorjában a következőket tesszük:
- egyrészt ellenőrizzük, hogy a
unicorn
bejegyzéstípus nézetét látjuk-e, és ha nem, akkor térjen is vissza a snippet, - töltsük be a CPT-hez tartozó összes taxonómiatípust, és ha vannak ilyenek, akkor mindegyikre hajtsuk végre a következőket:
- képezzünk egy taxonómia objektumot abból, ahol tartunk, ha találunk, egyúttal mentsük el a nevét egy külön változóba, majd kezdjünk egy legördülő listás választót
- kérjük le az ehhez a taxonómiához tartozó elemeket (gyakorlatilag azt, hogy milyen "kategóriák" vannak az adott rendezési elven belül), ha vannak ilyenek, akkor pedig írassuk ki mindegyiket a legördülőbe, a megfelelő formátumban
- végül zárjuk le a legördülő listánkat
Nem rajongok az olyan kódért, amiben a markuphoz (HTML) és a logikához (PHP) tartozó kód keveredik - nincs ez itt sem másként. Az viszont elvitathatatlan ettől a snippettől, hogy egy újabb plugintől szabadított meg minket - és mi is magunkat. Gratulálok, eggyel kevesebb plugint használsz!
Kérés, kérdés, óhaj-sóhaj? Dobj egy e-mailt!