WordPress: Filtrering af Indlæg efter Meta Data i WordPress Admin
At organisere og finde indhold i WordPress admin kan være en fordel, især når du har mange indlæg (eller andre brugerdefinerede indlægstyper) med forskellige egenskaber. Ved hjælp af tilpasset kodning kan du udvide wp-admin med filtreringsmuligheder, der gør det lettere at finde og sortere indhold baseret på deres specifikke metadata.
I mit eksempel fokuserer jeg på filtrering efter ‘biltype’ for indlægstypen ‘bil’. Du kan bruge samme tilgang til at filtrere efter andre metadatatyper, såsom tags, kategorier, datoer og meget mere.
/* Opret filterfunktion for forældre / varianter */
add_action( 'pre_get_posts', 'FilterParentAndVariants');
function FilterParentAndVariants( $query ){
global $pagenow;
$pt = 'bil';
if ( $pagenow=='edit.php' && isset($_GET['CarType']) && (isset($_GET['post_type'])) && $_GET['post_type'] == $pt) {
$query->set('meta_key', 'type');
$query->set('meta_value', $_GET['CarType']);
}
}
add_action('restrict_manage_posts', 'filterPostsByCarType',9999);
function filterPostsByCarType(){
global $pagenow;
$pt = 'bil';
if ((isset($_GET['post_type'])) && $_GET['post_type'] == $pt && is_admin() && $pagenow=='edit.php') {
$GETvalue = '&CarType=';
$SelectOptions = '';
echo $SelectOptions;
}
}
“pre_get_posts” er en WordPress-action, der giver mulighed for at ændre og tilpasse standard WP_Query-forespørgslen, inden den sendes til databasen. I mit kodestykke, bruger jeg pre_get_posts til at tilføje en filterfunktion i admin-delen, der giver mulighed for at filtrere indlæg efter en bestemt metadatatype hvis det eksakte GET parameter er sat.
Jeg bruger “restrict_manage_posts” til at tilføje en dropdown-menu over indlægslisten i admin-interfacet. Denne dropdown-menu giver mulighed for at filtrere indlæggene baseret på en bestemt metadatatype (i mit eksempel, “biltype”) og posttype “bil”. i arrayen for $optionsvalues indtaster du de muligheder som skal være muligt at filtre på. I mit eksempel er det blot “parent” og “variant”. Hvis du har mange er det måske en god ide at lave den dynamisk så den selv henter mulighederne på baggrund af det valgte meta key.
Dette kodeeksempel skal indarbejdes i enten din temas “functions.php”-fil eller via et plugin. Vær opmærksom på, at dette er en specialtilpasset løsning, og det er altid en god idé at lave en sikkerhedskopi, før du foretager ændringer i koden, hvis du ikke føler dig sikker.