我想知道如何输出子类别与父类别相关

时间:2019-07-22 作者:user172077

您当前正在添加两个父类别:事件和杂志。

该杂志有与访谈和评论相关的儿童类别。

下面是当前类别的层次表示。目前审查类别中没有员额。

Events
Magazine
Magazine > Interviews
Magazine > Review
这是要点。我想知道如何从当前类别ID中获取父类别ID,并列出子类别的名称。

下面是正在发生的问题。

如果访问并确认没有帖子的子类别,将输出一个不相关的事件类别。

它还打印一个错误。

Notice: Undefined offset: 0 in /var/www/html/custom/wp-content/themes/cocrework/category.php on line 6

Notice: Trying to get property \'category_parent\' of non-object in /var/www/html/custom/wp-content/themes/cocrework/category.php on line 7
使用以下代码。

<?php
    $cat_now = get_the_category();
    $cat_now = $cat_now[0];
    $parent_id = $cat_now->category_parent;
    $args = array(
        \'child_of\' => $parent_id,
    );

    var_dump(wp_list_categories($args));
?>

1 个回复
SO网友:Antti Koskinen

get_the_category() 应在(post)循环中使用或与$post_id 参数在您的代码中$cat_now 此时可能是一个空数组,因此在0位置没有任何内容。

而且get_the_category() 返回的数组WP_Term 对象,这些对象没有名为category_parent, 但只是parent. ,其中parent 应使用的属性。

如果要在中列出某个类别的子类别category.php, 那么下面的代码应该可以工作了。

/**
  * For category.php
  */
$current_category = get_queried_object(); // should be WP_Term object in this context
$category_list = \'\';
// $current_category->parent is 0 (i.e. empty), if top level category
if ( ! empty( $current_category->parent ) ) {
  $category_list = wp_list_categories(array(
    \'child_of\' => $current_category->parent,
  ));
  // var_dump($category_list);
}
只是为了好玩,举个例子,让孩子们在帖子的第一类。

/**
  * Used e.g. in single.php
  * get_the_id() is not required, if get_the_category() is used in the Loop
  */
$current_categories = get_the_category( get_the_id() ); // Array of WP_Term objects, one for each category assigned to the post.
$category_list = \'\';
if ( ! empty( $current_categories[0]->parent ) && $current_categories[0]->parent ) {
  $category_list = wp_list_categories(array(
    \'child_of\' => $current_categories[0]->parent,
  ));
  // var_dump($category_list);
}