$skin_type = "green";
$category_id = get_cat_ID( single_cat_title("", false));
if($category_id == 218){
$skin_type = "blue";
}
我的标题顶部有此代码,可为我的类别选择不同的背景。 使用菜单在Categories之间导航时效果很好,但是当我点击帖子输入single.php时,single_cat_title()似乎确实有效。我做错了什么,我怎么能解决它?
由于
答案 0 :(得分:1)
single_cat_title()适用于类别页面,因为该类别包含在查询变量中。在单个页面上,查询变量中不包含类别名称或ID,只有帖子ID。
要查看查询变量,请在页面中包含以下内容,可以在标题或category.php和single.php中查看差异。
<?php var_dump($wp_query->query_vars);?>
您需要使用get_the_category($post_ID)来获取单个帖子的类别。该函数返回一个对象数组,每个对象分配给一个帖子。要获取第一个或唯一类别,请使用数组索引“0”。如果在循环外部使用,则将post id传递给函数。在循环内部,它将默认为当前的帖子ID。由于您使用此功能控制标题,我打赌您将传递帖子ID。
$skin_type = "green";
$post_id = $_GET['p'];
$category = get_the_category($post_ID);
$category_id = $category[0]->**cat_ID**;
$if($category_id === 218){
$skin_type = "blue;
}
我意识到我正在将类别名称分配给上面的$ category_id,我已将对象属性更改为cat_ID
,这是正确的属性
如果帖子“SFSF”列在类别1,2,3和4中,并且您想在single.php上查看帖子时更改类别3的颜色,则必须将类别ID添加到假设您的导航是基于类别的,您单击的链接。当您在导航菜单中单击类别3时,您将在查询字符串中看到
"www.example.com/cat=3"
我们假设这是帖子的标题。
<a href = "<?php the_permalink();?>/my_cat=<?php echo $_GET['cat'];?>">
<?php the_title();?>
</a>
在这里,您添加了自定义查询var“my_cat”,并为其指定了当前页面的类别ID的值。
在single.php上,您不会像上面显示的那样从类别名称中获取类别ID,而是从查询字符串中检索它,类似于检索帖子ID的方式。
$skin_type = "green";
$category_id = $_GET['my_cat'];
$if($category_id === 218){
$skin_type = "blue;
}