WooCommerce存档页面产品查询上的多个orderby参数

时间:2020-04-29 08:36:33

标签: php wordpress woocommerce product stock

我想按库存状态(缺货在列表末尾)和价格(从最低价开始)在存档页面上订购产品。 现在,将菜单顺序设置为默认,并使用以下代码:

add_action( 'woocommerce_product_query', 'sort_by_stock_status', 999 );

function sort_by_stock_status( $query ) {
if ( is_admin() ) return;
$query->set( 'meta_key', '_stock_status' );
$query->set( 'orderby', array( 'meta_value' => 'ASC' ) );
}

这使我能够显示按库存状态订购的产品。

我正尝试编辑代码,因此它将按库存和价格排序...没有运气 这是我尝试过的:

 add_action( 'woocommerce_product_query', 'sort_by_stock_status_and_menu_order', 999 );

function sort_by_stock_status_and_menu_order( $query ) {
if ( is_admin() ) return;
$query->set( 'meta_key', '_stock_status' );
$query->set( 'orderby', array( 'meta_value' => 'ASC', 'menu_order' => 'ASC' ) );
}

如果我将菜单设置为“按价格订购”,我会看到产品仅按价格库存和缺货一起订购... 有人可以帮我吗?也许它已经在您的某些网站中实现了...))

1 个答案:

答案 0 :(得分:0)

您距离很近...您需要对代码进行一些更改,以仅使用一个字符串而不是数组(每个参数在此唯一字符串中用空格分隔)来获取多个“ orderby”参数 >:

add_action( 'woocommerce_product_query', 'sort_by_stock_status_and_menu_order', 999 );
function sort_by_stock_status_and_menu_order( $query ) {
    if ( is_admin() ) return;

    $query->set( 'meta_key', '_stock_status' );
    $query->set( 'orderby', 'meta_value menu_order' );
    // $query->set( 'order', 'ASC' ); // <== 'order' argument is already "ASC" by default
}

默认情况下,“ order”查询参数已为ASC,因此无需更改它。

代码进入活动子主题(或活动主题)的functions.php文件中。经过测试并可以正常工作。

相关问题