Woocommerce更改订单$ product-> get_categories

时间:2015-10-13 15:08:15

标签: php wordpress woocommerce

我需要订购" $ product-> get_categories()"的结果用slu ..

模板使用此代码:

$cat_count = sizeof( get_the_terms( $post->ID, 'product_cat' ) );

//And after...

<?php echo $product->get_categories( ', ', '<span class="posted_in">' . _n( 'Category:', 'Categories:', $cat_count, 'woocommerce' ) . ' ', '</span>' ); ?>

我在教程中看到过,我可以使用此代码,但不起作用(在functions.php中):

function wptt_cat_order( $args ){

    $args['orderby'] = 'slug';
    $args['order'] = 'ASC';
    return $args;

} // wptt_cat_order
add_filter( 'woocommerce_product_subcategories_args', 'wptt_cat_order' );

我遇到的其他问题是(但并不比其他问题重要),为什么他在&#34; _n()&#34;中使用$ cat_count?功能而不是&#34; get_the_terms($ post-&gt; ID,&#39; product_cat&#39;)&#34;?首先只是一个数字O_O。

1 个答案:

答案 0 :(得分:0)

简单回答:您无法使用该方法对类别进行排序。

您需要使用wp_get_post_terms()编写自己的循环,这允许您传递参数(例如orderby)。像下面的东西应该工作(但我还没有测试过):

$args = array(
    'orderby' => 'name',
);
$product_cats = wp_get_post_terms( $product->id, 'product_cat', $args );
$cat_count = sizeof( $product_cats );

echo '<span class="posted_in">' . _n( 'Category:', 'Categories:', $cat_count, 'woocommerce' );
for ( $i = 0; $i < $cat_count; $i++ ) {
    echo $product_cats[$i]->name;
    echo ( $i === $cat_count - 1 ) ? '' : ', ';
}
echo '</span>';