通过WP_Query中的自定义Woocommerce产品排序排序

时间:2018-06-19 21:17:59

标签: php wordpress sorting woocommerce product

我创建了一个短代码,用于通过以下查询按类别显示产品:

$atts = shortcode_atts( array (
        'type' => 'product',
        'posts' => -1,
        'category' => '',
    ), $atts, 'list_products' );

    $query = new WP_Query( array(
        'post_type' => $atts['type'],
        'posts_per_page' => $atts['posts'],
        'tax_query' => array( array(
             'taxonomy' => 'product_cat',
             'field' => 'slug',
             'terms' => $atts['category'],
        ) ),
    ) );

这很好,但是当我使用自定义排序shown here

对产品进行排序时,我尝试使用order by属性

我添加了:'orderby' => 'modified',尝试来自here的其他人。

两个问题:

使用自定义排序时,我需要使用哪个属性进行排序

添加到上述查询中后,我该怎么做才能使我的orderby属性起作用?因为我使用过的那个属性值始终按发布的降序排序。

1 个答案:

答案 0 :(得分:2)

在对Woocommerce产品使用自定义排序时,它会在UIViewController列下的wp_posts数据库表中为每种产品设置一些值。

然后,您只需要在menu_order中添加'orderby' => 'menu_order',,在代码中:

WP_Query

它将起作用(默认情况下,$atts = shortcode_atts( array ( 'type' => 'product', 'posts' => -1, 'category' => '', ), $atts, 'list_products' ); $query = new WP_Query( array( 'post_type' => $atts['type'], 'posts_per_page' => $atts['posts'], 'tax_query' => array( array( 'taxonomy' => 'product_cat', 'field' => 'slug', 'terms' => $atts['category'], ) ), 'orderby' => 'menu_order', // 'order' => 'DESC', ) ); 排序参数通常设置为order