带有子项的自定义分类列表

时间:2013-11-18 作者:Baerkins

我试图显示自定义分类法的术语列表,但遇到了一些问题。自定义税是针对名为project.

我要做的是列出父项及其子项,例如:

绘画2013年,2012年,2011年,当您访问子术语的存档时,会出现相同的列表,显示父术语。

我已尝试使用wp_list_categories() 而且它有潜力,但我不知道如何为这些目的操纵它,这意味着当存档用于子术语时,不会显示父术语和所有其他子术语。

模板中的代码根本不起作用,它来自WP Codex示例。以下是模板代码:

  global $wp_query;
  $term = $wp_query->get_queried_object();
  $title = $term->name;                     
  $termID = $term->term_id;
  $taxonomy_name = $term->taxonomy;
  $termChildren = get_term_children( $termID, $taxonomy_name );

  echo $title;
  echo $termChildren;

  echo \'<ul>\';

  foreach ( $termChildren as $termChild ) {
    $term2 = get_term_by( \'id\', $termChild, $taxonomy_name );
    echo \'<li><a href="\' . get_term_link( $term2->name, $taxonomy_name ) . \'">\' . $term2->name . \'</a></li>\';
  }

  echo \'</ul>\';
这不会呈现列表,并会打断foreach 陈述

为了更好地衡量,这里是海关税代码,以防我在那里做了蠢事:

add_action( \'init\', \'register_taxonomy_mediums\' );

function register_taxonomy_mediums() {

    $labels = array( 
        \'name\' => _x( \'Mediums\', \'mediums\' ),
        \'singular_name\' => _x( \'Medium\', \'mediums\' ),
        \'search_items\' => _x( \'Search Mediums\', \'mediums\' ),
        \'popular_items\' => _x( \'Popular Mediums\', \'mediums\' ),
        \'all_items\' => _x( \'All Mediums\', \'mediums\' ),
        \'parent_item\' => _x( \'Parent Medium\', \'mediums\' ),
        \'parent_item_colon\' => _x( \'Parent Medium:\', \'mediums\' ),
        \'edit_item\' => _x( \'Edit Medium\', \'mediums\' ),
        \'update_item\' => _x( \'Update Medium\', \'mediums\' ),
        \'add_new_item\' => _x( \'Add New Medium\', \'mediums\' ),
        \'new_item_name\' => _x( \'New Medium\', \'mediums\' ),
        \'separate_items_with_commas\' => _x( \'Separate mediums with commas\', \'mediums\' ),
        \'add_or_remove_items\' => _x( \'Add or remove mediums\', \'mediums\' ),
        \'choose_from_most_used\' => _x( \'Choose from the most used mediums\', \'mediums\' ),
        \'menu_name\' => _x( \'Mediums\', \'mediums\' ),
    );

    $args = array( 
        \'labels\' => $labels,
        \'public\' => true,
        \'show_in_nav_menus\' => true,
        \'show_ui\' => true,
        \'show_tagcloud\' => true,
        \'show_admin_column\' => true,
        \'hierarchical\' => true,
        \'has_archive\' => true,
        \'rewrite\' => true,
        \'query_var\' => true
    );

    register_taxonomy( \'mediums\', array(\'project\'), $args );
}
任何帮助都会很好。谢谢

1 个回复
SO网友:Lucio Coire Galibone

您的代码在自定义分类法模板文件中运行良好。

案例1

您试图在单个页面或其他内容中使用此代码,但由于对象从get_queried_object() 不是分类法。功能get_queried_object() 返回当前查询的对象。因此,如果您需要一个分类法对象,您必须在分类法归档页面中调用它。

案例2

您正在分类法存档页中使用此代码。如果需要为家长和孩子显示相同的列表,则必须检查当前术语是儿童还是家长,因为您必须调用get_term_children() 以父id作为参数。

如果你打电话get_term_children() 如果子项上有当前的术语ID,则可能会得到一个空列表。

所以请检查$term->parent 价值此变量输出父分类的ID。因此,如果您使用的是父分类法,那么$term->parent将回显0,您可以调用get_term_children() 使用$term->term_id 价值如果你有孩子,你必须打电话get_term_children() 使用$term->parent 价值

结束

相关推荐

GET_POST_TERMS未按预期工作

我有一个称为“水果”的自定义帖子类型,在这个类型下,我有一个称为“水果类别”的层次分类法当我在Fruit下创建一个新帖子时,我可以将其分配到一个“术语”,就像您在普通帖子类别下一样,但在Fruit Categories分类下。我在Fruit上增加了三个职位,每个职位分别分配给一个任期;“苹果”、“梨”和“香蕉”。所有这些都很好,但现在我想创建一个归档页面,简单地列出UL中的术语,用于自定义帖子类型,如下所示;我的网站。玉米/水果我面临的问题是,我使用的每个查询似乎只返回第一个词Apples。其他两个没有显