Php Woocmere orderby价格循环问题

Php Woocmere orderby价格循环问题,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我试图获得一个简单的快捷码,以根据价格(降价)循环产品。出于某种原因,下面的代码没有按价格订购,它只是忽略了order属性。代码如下: function sort_by_price( $atts ){ $args = array( 'post_type' => 'product', 'posts_per_page' => 20, 'orderby' => 'price', 'order' => 'd

我试图获得一个简单的快捷码,以根据价格(降价)循环产品。出于某种原因,下面的代码没有按价格订购,它只是忽略了order属性。代码如下:

function sort_by_price( $atts ){

    $args = array(
        'post_type' => 'product',
        'posts_per_page' => 20,
        'orderby' => 'price',
        'order' => 'desc'
        );
    $loop = new WP_Query( $args );
    if ( $loop->have_posts() ) {
        while ( $loop->have_posts() ) : $loop->the_post();
            wc_get_template_part( 'content', 'product' );
        endwhile;
    } else {
        echo __( 'No products found' );
    }
    wp_reset_postdata();
}
add_shortcode( 'sorter', 'sort_by_price' );

感谢您的帮助

Price不是
sortby
参数的可识别值

请尝试以下参数:

$args = array(
        'post_type' => 'product',
        'posts_per_page' => 20,
        'meta_key' => '_price',
        'orderby' => 'meta_value_num',
        'order' => 'desc'
        );

对于
sortby
参数,价格不是可识别的值

请尝试以下参数:

$args = array(
        'post_type' => 'product',
        'posts_per_page' => 20,
        'meta_key' => '_price',
        'orderby' => 'meta_value_num',
        'order' => 'desc'
        );

这是可行的,但它只显示了5个结果,而不是20个。如果我把值提高到50,我得到12,如果我把它提高到100,我得到20。非常奇怪,虽然my functions.php没有相关代码,但在其他地方肯定存在冲突:(.有时元查询很棘手,因为它会自动排除没有该元键的项目。但是,在这种情况下,这不应该是一个问题,因为大多数产品都是作为价格的。这是可行的,但它只显示5个结果,而不是20个。如果我将值提高到50,我得到12个,如果我将其提高到100,我得到20个。非常奇怪,一定有som尽管my functions.php没有相关代码,但其他地方的ething存在冲突:(。有时元查询很棘手,因为它会自动排除没有该元键的项。但是,在这种情况下,这不应该是一个问题,因为大多数产品都是按价格计算的。