为什么我的IF/ELLIF/ELSE在这里不能正常工作?

时间:2014-01-09 作者:ChaBuku Bakke

我正在使用一段简单的if/elseif/else代码为我的页面生成一个标题图像,我似乎无法理解为什么它不能正常工作。它确定要显示的页面的类别,并相应地显示标题。这是我标题中的代码。php:

<?php if (is_category(\'dino run\') || has_category(\'dino run\')) { ?>
    <a href="dino-run/"><li><div class="logo splash2">Dino Run</div></li></a>           
<?php } elseif (is_category(\'potatoman\') || has_category(\'potatoman\')) { ?>
    <a href="http://www.pixeljam.com/potatoman/"><div class="logo splash4">Potatoman Seeks the Troof</div></a>
<?php } elseif (is_category(\'glorkian\' || \'glork\') || has_category(\'glorkian\' || \'glork\')) { ?>
    <a href="glorkian"><div class="logo splash3">Glorkian Warrior</div></a>
<?php } else { ?>
        <a href="#"><div class="logo splash1">The Pixeljam Octology</div></a>
<?php } ?>
我遇到的问题是我点击了一个有“恐龙跑步”分类的帖子,它显示的很好。。。但是,当我点击一篇没有上述3个定义类别的帖子时,它不会进入else语句,它实际上会显示第三个标题“Glorkian Warrior”。

知道我做错了什么吗?

2 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

is_category 不会处理参数列表中的逻辑。这是:

is_category(\'glorkian\' || \'glork\')
该条件在所有类别页面上均为真。我认为,PHP确实解析了参数字符串,但始终都是真的。尝试以下操作:

var_dump(\'glorkian\' || \'glork\');
这意味着你所做的基本上是:

is_category(true);
这不是一个有效的参数,但函数似乎恢复为默认功能——这是类别存档还是非类别存档?显然,对于任何类别的档案,答案都是“是”。

有效参数包括:

(混合)(可选)类别ID、类别标题、类别Slug或ID、名称和Slug的数组。

http://codex.wordpress.org/Function_Reference/is_category#Parameters

所以我相信你需要的是:

is_category(
  array(
    \'glorkian\',
    \'glork\'
  )
);
这与has_category.

SO网友:Brad Dalton

我会使用:

in_category(\'cat-slug\') ) { 
如果要在类别中的所有帖子上显示图像。

下面是我编写和测试的一个工作示例。

这将在类别存档页面和类别中的所有帖子上返回true

if(is_home())

echo \'<div class="home-header"><img src="http://yourdomain.com/path/to/image.png" alt="category header image" /></div>\';

elseif(in_category(\'category-1\') )

echo \'<div class="category-one-header"><img src="http://yourdomain.com/path/to/image.png" alt="category header image" /></div>\';

elseif(in_category(\'category-2\') )

echo \'<div class="category-two-header"><img src="http://yourdomain.com/path/to/image.png" alt="category header image" /></div>\';

elseif(in_category(\'category-3\') )

echo \'<div class="category-three-header"><img src="http://yourdomain.com/path/to/image.png" alt="category header image" /></div>\';

elseif(in_category(\'category-4\') )

echo \'<div class="category-four-header"><img src="http://yourdomain.com/path/to/image.png" alt="category header image" /></div>\';

}

Related info

另一种选择是使用“211个主题”标题中的代码。允许您使用内置Add Featured Image meta boxdisplay unique headers on different posts and pages 不添加任何代码。

或者您可以轻松地向代码中添加条件语句或if语句,这是一种更有效的解决方案。

结束

相关推荐

通过php创建子类别

有人能告诉我这里怎么了吗?我试图通过PHP创建一个类别和一个子类别。我的代码是wp_set_object_terms($postID, array($subCategory, $catgeory), \'category\'); 但这在同一个hirearchy级别上创建了两个类别;我的目标是一个具有子类别的类别。