Sebagian besar contoh di atas berfungsi tetapi jika Anda menggunakan beberapa kategori NONE (saat penulisan, WP versi 3.6) dari metode lain berfungsi untuk mendapatkan semua kategori yang telah diteruskan ke "cat" atau "category_name".
Satu-satunya cara yang saya temukan adalah dengan menarik data dari:
$wp_query->query['category_name']
Untuk beberapa alasan ini mengembalikan nilai yang berbeda get_query_var( 'category_name' )
yang hanya mengembalikan kategori pertama.
Saat menggunakan beberapa kategori, Anda harus menggunakan beberapa fungsi seperti explode
untuk mendapatkan array siput kategori, lalu mengulanginya untuk mengambil semua 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
?>
Jelas perlu ada beberapa pertimbangan saat menggunakan operator AND (+) atau OR (,).