使用GET_TERM_CHILDS获取当前帖子的父类别的子类别

时间:2014-04-20 作者:tommyf

在我的WooCommerce主题中,我创建了一个根类别:“品牌”,然后针对每个产品,我将其品牌作为子类别添加到“品牌”父类别中。

在产品页面上,我想显示当前产品的品牌。

global $post;

// Get the brands ID from slug
$brands_id = get_term_by(\'slug\', \'brands\', \'product_cat\');

// Get the children of that term
$termchildren = get_term_children( $brands_id, \'product_cat\' );

// Loop through the children of \'brand\' term to echo the name of the brand
foreach ( $termchildren as $child ) {
    $term = get_term_by( \'id\', $child, \'product_cat\' );
    echo \'<a href="\' . get_term_link( $child, \'product_cat\' ) . \'">\' . $term->name . \'</a>\';
}
这总是呼应所有品牌。如何获取这些信息并过滤掉与当前产品无关的品牌?

3 个回复
SO网友:tommyf

不需要get_term_children() 完全只需循环通过get_the_terms() 得到所需的东西。

global $post;
$brands_id = get_term_by(\'slug\', \'brands\', \'product_cat\');

$terms = get_the_terms($post->ID, \'product_cat\');
foreach ($terms as $term) {
    if($term->parent === $brands_id->term_id) {
        echo $term->name;
        break;
    }
}

SO网友:Bindiya Patoliya
$term_id       = get_term_by( \'slug\', \'brands\', \'product_cat\' );
$taxonomy_name = \'product_cat\';
$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>\';
SO网友:Mile Milosheski

首先,我在这里问了同样的问题,我自己也得到了答案:)

https://wordpress.stackexchange.com/questions/188839/wordpress-tags-and-hierarchy-parent-child-relation

以下是您应该如何操作:

    $taxonomies = array( 
        \'brands\'
    );

    $args = array(
        \'orderby\'           => \'name\', 
        \'order\'             => \'ASC\',
        \'fields\'            => \'all\',
        \'parent\'            => \'(parentID)\',
        \'hierarchical\'      => true, 
        \'child_of\'          => 0
    ); 

    $terms = get_terms($taxonomies, $args);
    var_dump($terms);
    foreach ($terms as $term) {
        print \'<h2 class="story-heading">\'.$term->name.\'</h2>\';
    } 
如果您已经知道父类别的ID,只需将其作为INT传递到foreach循环中,就可以得到父类别的所有子项(子类别)。此外,如果您需要重用它,我的意思是如果您希望多次显示同一查询并得到不同的parent -> child 我建议编写一个函数并将其放入函数中。php函数应如下所示:

function get_children_of_parent_terms($tax, $pid) {
  $taxonomies = $tax;

        $args = array(
            \'orderby\'           => \'name\', 
            \'order\'             => \'ASC\',
            \'fields\'            => \'all\',
            \'parent\'            => $pid,
            \'hierarchical\'      => true, 
            \'child_of\'          => 0
        ); 

        $terms = get_terms($taxonomies, $args);
        var_dump($terms);
        foreach ($terms as $term) {
            print \'<h2 class="story-heading">\'.$term->name.\'</h2>\';
        }
   }

add_action(\'init\',\'get_children_of_parent_terms\');
然后,每当您想从父项(category)查询子项时,只需调用此函数,例如,分类法的父类别名称为$tax,父id为$pidecho get_children_of_parent_terms(\'brands\',\'15\'); 假设您有分类品牌和一些id为15的父术语,它们将输出id为15的术语的所有子术语。

干杯

结束

相关推荐

使用Get_Categories显示类别的图像,或显示任何子帖子中的图像

我正在使用get\\u categories列出父类别的子类别。我想使用get\\u categories输出将图像添加到子类别。我可以从我正在使用get\\u categories的类别的子类别(即父类别的子类别)的任何帖子中获取特色图像。我不想显示任何其他孙儿信息,只想从每组类别的孩子中获得一张特色图片我当前使用的代码是$args = array(\'child_of\' => 1 ); $categories = get_categories($args); forea