Die meisten der obigen Beispiele funktionieren, aber wenn Sie mehrere Kategorien NONE (zum Zeitpunkt des Schreibens, WP Version 3.6) der anderen Methoden verwenden, werden alle Kategorien abgerufen, die entweder an "cat" oder "category_name" übergeben wurden.
Die einzige Möglichkeit, die ich gefunden habe, ist das Abrufen der Daten von:
$wp_query->query['category_name']
Aus irgendeinem Grund wird ein anderer Wert zurückgegeben, auf get_query_var( 'category_name' )
den nur die erste Kategorie zurückgegeben wird.
Wenn Sie mehrere Kategorien verwenden, müssen Sie einige Funktionen verwenden explode
, um ein Array von Kategorie-Slugs zu erhalten, und diese dann durchlaufen, um alle IDs abzurufen:
<?php
global $wp_query;
//grab all categories from query string (if using `category_name`)
$category_slugs_array = explode("+",esc_attr($wp_query->query['category_name']));
$categories = array();
$category_ids = array();
//loop through all the slugs
foreach($category_slugs_array as $category_slug)
{
//get category object using slug
$category = get_category_by_slug( $category_slug );
//check to make sure a matching category has been found
if(isset($category->cat_ID))
{
$categories[] = $category;
$category_ids[] = $category->cat_ID;
}
}
var_dump($categories); //array of categories
var_dump($category_ids); //array of category IDs
?>
Offensichtlich müssen bei der Verwendung von UND- (+) oder ODER- (,) Operatoren einige Überlegungen angestellt werden.