仅从父类别中获取选定的子类别

时间:2017-10-07 12:57:25

标签: php wordpress

首先,我不是我的朋友的开发者,我可以获得所有类别ID“1292”的子类别,但它的工作正常,但我想只显示我从类别中选择的一些类别“ 1292“

<?php
$term_id = 1292;
$taxonomy_name = 'product_cat';
$term_children = get_term_children( $term_id, $taxonomy_name );
foreach ( $term_children as $child ) {
$term = get_term_by( 'id', $child, $taxonomy_name );
$category_thumbnail = get_woocommerce_term_meta($term->term_id,     'thumbnail_id', true);
$image = wp_get_attachment_url($category_thumbnail);
echo '<div class="col-md-2 col-sm-12">

<div class="ado-prdct-cat">
    <div class="ado-prdct-cat-wrpr">
      <a href="' . get_term_link( $child, $taxonomy_name ) . '">  <img   src="'.$image.'">
    </div>

    <div class="ado-prdct-cat-ttl-wrpr">
    ' . $term->name . '</a>
    </div>
</div>
</div>';
}
?>

类别ID 1292有15个子类别,我希望它们中的一些在父页面ID 1292中显示在页面上,如果有人知道相同的最佳方式

1 个答案:

答案 0 :(得分:1)

选择在哪里进行,您是否可以在代码中对要使用/跳过的ID进行硬编码?

您在$ child中拥有孩子的学期ID,只需添加

if(in_array($child, array(123, 456))) continue;

$term = get_term_by( 'id', $child, $taxonomy_name );

跳过类别123和456,或使用!in_array仅显示这些内容并跳过其他内容。 当然,您可以使用变量而不是array(123, 456)

修改:将其转换为shortcode也非常简单:

add_shortcode( "mycategoryprinter" , function($attributes) {
    $skipids = array();
    if(array_key_exists("skipids", $attributes)) {
        $skipids = preg_split("/\s*,\s*/", $attributes["skipids"]);
    }
    $term_id = $attributes["termid];
    $taxonomy_name = $attributes["taxonomy];

    // code goes here, change echo to return

});

然后您可以使用

之类的内容
[mycategoryprinter termid="1292" taxonomy="product_cat" skipids="123, 456"][/mycategoryprinter]