上述大多数示例都有效,但如果您使用多个类别,则其他方法都无法获取已传递给“cat”或“category\\u name”的所有类别。
我找到的唯一方法是从以下位置提取数据:
$wp_query->query[\'category_name\']
出于某种原因,这会将不同的值返回给
get_query_var( \'category_name\' )
它只返回第一个类别。
当使用多个类别时,您必须使用以下功能explode
要获取一个类别段塞数组,然后循环该数组以获取所有ID:
<?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
?>
显然,在使用AND(+)或or(,)运算符时需要考虑一些因素。