在单独的页面上显示类别、子类别和子子类别

时间:2020-01-31 作者:Christian Watson

我正在我们的移动网站上建立一个常见问题部分,我希望该部分具有以下层次结构:

类别>子类别>子类别>文章

我希望类别列表和每个子类别列表都显示在自己的单独页面上,而不是使用手风琴风格的UI(这在大多数常见问题解答插件中都可以找到)。

我的开发人员告诉我,我们只能在WP中的单独页面上显示Category>Sub Category,但不能显示Sub-Sub Category。

我想知道是否有可能做到我在WP中描述的那样,以便我可以要求我的开发人员做更多的研究。如果你也能解释一下我们应该怎么做,那将是一个很大的帮助!

1 个回复
SO网友:Kristián Filo

如果我理解正确,这当然是可能的。

我将从确定当前类别是否有父类别的函数开始。

function category_has_parent($catid){
    $category = get_category($catid);
    if ($category->category_parent > 0){
        return $category->category_parent;
    }
    return false;
}
在显示FAQ的PHP模板中,我会检查当前类别是否有父类别(如果上面的函数返回其ID)或没有父类别(返回false)。如果不是,我将通过定义\'parent\' => 0 在查询参数中(当然还有分类法和其他详细信息)。

$args = array(
  \'taxonomy\' => \'category\',
  \'parent\' => \'0\'
);
$categories = get_categories($args);
您可以随意显示这些类别。

如果当前类别有父类别,则表示它要么是子类别,要么是子类别(或N倍的“子类别”,无所谓)。如果那样的话,我想all children of the parent category.

function get_parent_children( $term_id = 0, $taxonomy = \'category\' ) {
    $children = get_categories( array( 
        \'child_of\'      => $term_id,
        \'taxonomy\'      => $taxonomy,
        \'fields\'        => \'ids\',
    ) );
    return ( $children );
}
最后,您可以使用父ID和分类法调用上面的函数。如果它返回的是子对象,您应该以自己喜欢的方式显示它们。如果没有,则意味着它只包含文章-在这种情况下,请继续显示它们。

我的建议是使用AJAX动态地重新加载PHP生成的内容。您还可以将当前类别ID存储在DOM中的某个位置(类或某些数据属性)。这样,您甚至不必检查父类别ID。您可以使用AJAX将其作为$\\u GET变量传递。

相关推荐

Categories manage

我正在尝试向CPT中添加特定类别,只有在添加新帖子时,您才能看到与这些帖子类型相关的类别。此外,我希望能够从后端添加类别,而不是从代码添加类别,因为我有很多类别将要更改。如果有一个插件可以做到这一点,那很好,但我也希望了解它是如何做到的。非常感谢