Wordpress - 获取当前类别的父母

时间:2010-06-25 01:23:48

标签: wordpress categories

在category.php中,我如何针对具有父类别的类别进行测试?

如果父类别是A,子类别是B,并且用户加载了类别B的URL,我希望能够测试它是否具有父A,并且如果有,则运行代码。< / p>

我找到了get_category_parents标记,但它似乎返回了一个链接列表而不是一个数组:

get_category_parents($cat, TRUE, ', '));

即使我得到了数组,我也不确定是什么PHP函数来测试它(php noob)。

谢谢!

3 个答案:

答案 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, ', '));

我还建议不要使用空格作为分隔符,因为稍后可能需要修剪这些空格。