在category.php中,我如何针对具有父类别的类别进行测试?
如果父类别是A,子类别是B,并且用户加载了类别B的URL,我希望能够测试它是否具有父A,并且如果有,则运行代码。< / p>
我找到了get_category_parents标记,但它似乎返回了一个链接列表而不是一个数组:
get_category_parents($cat, TRUE, ', '));
即使我得到了数组,我也不确定是什么PHP函数来测试它(php noob)。
谢谢!
答案 0 :(得分:11)
您可以使用cat_is_ancestor_of
功能检查某个类别是否属于其他类别的子级。例如,检查当前类别是否为名为“blog”的类别的子项:
cat_is_ancestor_of(get_cat_id('blog'), get_query_var('cat'))
答案 1 :(得分:2)
首先,您必须获取当前类别的ID:
$category_id = get_query_var('cat');
然后,您可以进行数据库查询以查看它是否具有父级:
$parent = $wpdb->get_var("SELECT parent FROM ".$wpdb->prefix."term_taxonomy WHERE term_id = $category_id");
如果它有一个,$ parent将包含一个级别以上的父级id,当然它的值应该大于0,所以你可以检查如下:
<?php if ($parent > 0 ) : ?>
// do something
<?php endif; ?>
您可以随意使用$ parent;
$parent_link = get_category_link( $parent );
$parent_name = get_cat_name( $parent );
// etc.
如果你想看到有更多的高级父级,你可以用父的id做同样的事情(db查询),甚至写一个直到顶级的递归函数。正如我在源代码中看到的,内置的get_category_parents()函数就是这样做的。
HTH
答案 2 :(得分:0)
查看get_category_parents
的参考页,当您将第二个参数设置为TRUE
时,您需要链接。
你应该这样做:
get_category_parents($cat, FALSE, ', '));
我还建议不要使用空格作为分隔符,因为稍后可能需要修剪这些空格。