2016-02-26 92 views
0

我试图做一个if语句来回应帖子所在的每个类别的单词,它从帖子id中获得类别名称,但第一个类别是All Stories,所以我要求它获得第二个类别该帖子是在:为什么我的if语句不能使用get_the_category?

$category_detail=get_the_category($post->ID)[1]->name; 
echo $category_detail; 
// echoes COMPANY NEWS 
if($category_detail == "COMPANY NEWS") { 
    echo "C_News"; 
} elseif ($category_detail == "SECTOR OPPORTUNITIES") { 
    echo "S_News"; 
} 

但结果是每个职位类别后的C_News,即使它不是正确的类别。

enter image description here enter image description here

我尝试使用is_category(“公司新闻”),但没有工作,任何建议将不胜感激。

回答

4

你正在寻找一个比较==)代替分配=):

$category_detail=get_the_category($post->ID)[1]->name; 
echo $category_detail; 
// echoes COMPANY NEWS 
if($category_detail == "COMPANY NEWS") { 
    echo "C_News"; 
} elseif ($category_detail == "SECTOR NEWS") { 
    echo "S_News"; 
} 

你的代码(if ($category_detail = "COMPANY NEWS"))始终是真实的,因为它是一个分配,因此将始终回显COMPANY NEWS分支。

+0

没有运气完全不显示任何内容。 – MrJoshFisher

+0

@MrJoshFisher:'$ category_detail'中的值(确切值)。另外,有没有空白? – Jan

+0

使用echo $ category_detail;只是呼应“公司新闻”,显然对于不同的职位有不同的结果。 – MrJoshFisher

1

我能看到的唯一问题是您需要使用比较运算符(“==”)而不是使用(“=”)设置$ category_detail变量。确保你在两个地方改变了这一点。

还要注意,wordpress编码标准说你的比较应该有右侧的变量,这样,如果你曾经错误地键入它或别的什么都不会令操作失败并抛出一个错误,而不是总是返回true。

例子:

if("Company News" == $category_detail){ 
    echo "hello world"; 
} 
+0

我将比较运算符换成了==并为了它的乐趣,我将它切换为原来的样子(“公司新闻”== $ category_detail),但仍然没有运气。 – MrJoshFisher

+0

请尝试严格比较如果(“公司新闻”=== $ category_detail) 另外,==比较区分大小写。您可以尝试将两个值设置为低或大写以进行精确比较。 –

相关问题