按ID显示特定类别的列表

时间:2014-12-05 作者:dzdesigner

我有一个自定义分类ID列表,如(1, 2, 3, 10).我想按名称显示这些指定类别的列表,每个类别都应该有其子类:

Europe

<法国、德国

Africa

<尼日利亚,南非,我使用这个,但它只显示子类别,不显示父类别,重要的是允许放置ID列表,而不是仅放置一个ID(示例中为10)

$term_id = 10;
$taxonomy_name = \'products\';
$termchildren = get_term_children( $term_id, $taxonomy_name );

echo \'<ul>\';
foreach ( $termchildren as $child ) {
    $term = get_term_by( \'id\', $child, $taxonomy_name );
    echo \'<li><a href="\' . get_term_link( $child, $taxonomy_name ) . \'">\' . $term->name . \'</a></li>\';
}
echo \'</ul>\';

1 个回复
最合适的回答,由SO网友:Sven 整理而成

你已经走上了正确的道路;只需为$parent_terms 围绕现有循环排列。此外,检查数组中的数字是否为有效的术语ID也是一个好主意,因此最终可能会执行以下操作:

$parent_terms = array( 1, 2, 3, 10 );
$taxonomy = \'products\';

echo \'<ul>\';
foreach ( $parent_terms as $parent_term_id ) {
  $parent_term = get_term_by( \'id\', $parent_term_id, $taxonomy );

  if ( $parent_term ) {
    echo \'<li><a href="\' . get_term_link( $parent_term_id, $taxonomy ) . \'">\' . $parent_term->name . \'</a>\';

    $child_terms = get_term_children( $parent_term_id, $taxonomy );
    if ( $child_terms ) {
      echo \'<ul>\';
      foreach ( $child_terms as $child_term_id ) {
        $child_term = get_term_by( \'id\', $child_term_id, $taxonomy );
        echo \'<li><a href="\' . get_term_link( $child_term_id, $taxonomy ) . \'">\' . $child_term->name . \'</a></li>\';
      } // end of child terms loop
      echo \'</ul>\';
    } // end of $child_terms

  echo \'</li>\';
  } // end of $parent_term

} // end of parent terms loop
echo \'</ul>\';
Update: 假设您使用的是OptionTree插件,那么您可以填充$parent_terms 如下数组:

$parent_terms = array(); // define empty array
$term_options = ot_get_option(\'option-name\');
foreach ( $term_options as $term_option_id ) {
  // convert strings to numbers and save them in $parent_terms
  array_push( $parent_terms, intval($term_option_id) );
}

结束

相关推荐

Set a taxonomy as private

我创建了分类增值税,并将public设置为false。但在前端,我可以通过…/?增值税=22。如何保留该分类法供内部使用?下面是我为此分类法创建的代码。add_action( \'init\', \'gp_register_taxonomy_vat\' ); function gp_register_taxonomy_vat() { $labels = array( \'name\' => \'VAT\', \