我有一个有5个不同类别的网站,每个类别都有一个notices
部分我还想有另一个部分来查看任何类别的最新通知。
到目前为止,我发现我可以在URL中使用这个?cat=20,25,30,35
而且它会返回我想要的东西(如果我没弄错的话)。
现在,我想知道如何为包含所有通知的特定部分创建另一个模板页面。
通常我在我的category.php
:
if($this_category->slug == "groups-london" || $this_category->slug == "groups-cambridge"){
include(TEMPLATEPATH.\'/groups.php\');
}else{
include(TEMPLATEPATH.\'/general.php\');
}
但在这种情况下,我不能使用相同的方法,因为我注意到
$this_category
仅包含作为URL中第一个参数传递的类别中的信息。所以,在这种情况下
?cat=20,25,30,35
仅来自ID为的类别
20
.
有什么建议吗?也许我应该用一种完全不同的方法来解决这个问题?
SO网友:s_ha_dum
你需要get_categories()
使用include
参数:
if (isset($_GET[\'cat\'])) {
$this_category = get_categories(
array(
\'include\' => $_GET[\'cat\']
)
);
var_dump($this_category);
}
您将获得
array
属于
stdClass
包含类别数据的对象。有几种方法可以解析,但这可能会做到:
if (isset($_GET[\'cat\'])) {
$this_category = get_categories(
array(
\'include\' => $_GET[\'cat\']
)
);
// var_dump($this_category);
$cats = wp_list_pluck($this_category,\'slug\');
var_dump($cats);
$needle = array(\'groups-london\',\'groups-cambridge\');
var_dump(array_intersect($needle,$cats));
if(array_intersect($needle,$cats)){
include(TEMPLATEPATH.\'/groups.php\');
}else{
include(TEMPLATEPATH.\'/general.php\');
}
}