Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress-获取当前类别的父项_Wordpress_Categories - Fatal编程技术网

Wordpress-获取当前类别的父项

Wordpress-获取当前类别的父项,wordpress,categories,Wordpress,Categories,在category.php中,如何针对具有父类别的类别进行测试 如果父类别是A,子类别是B,并且用户加载类别B的URL,我希望能够测试它是否有父类别A,如果有,则运行代码 我找到了get_category_parents标记,但它似乎返回的是链接列表而不是数组: get_category_parents($cat, TRUE, ', ')); 即使我得到了这个数组,我也不确定要针对它测试什么php函数(PHPNoob) 谢谢 首先,您必须获取当前类别的id: $category_id = ge

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

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

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

get_category_parents($cat, TRUE, ', '));
即使我得到了这个数组,我也不确定要针对它测试什么php函数(PHPNoob)


谢谢

首先,您必须获取当前类别的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; ?>
如果您想看到有更多的高级父级,您可以使用父级id执行相同的操作(db查询),甚至可以编写一个递归函数,直到达到顶级。正如我在源代码中看到的,内置的get_category_parents()函数就是这样做的

HTH

您可以使用该功能检查一个类别是否是另一个类别的子类别。例如,要检查当前类别是否是名为“blog”类别的子类别,请执行以下操作:

cat_is_ancestor_of(get_cat_id('blog'), get_query_var('cat'))

查看参考页,当您将第二个参数设置为
TRUE
时,您正在请求链接

你应该做:

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

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

category.php
(或任何单个类别模板)中,您可以使用全局变量$cat来检索当前类别的ID。因此,您可以选中
cat是(ID,$cat)的祖先使用ID通常是更好的方法,因为它们在重命名名称/slug/任何东西时都不会更改。
    get_category_parents($cat, FALSE, ', '));