WooCommerce 存档页面产品查询上的多个 orderby 参数
Multiple orderby arguments on WooCommerce archive page product query
我想在存档页面上按库存状态(列表末尾缺货)和价格(从低到低)订购产品。
现在菜单顺序设置为默认值并使用此代码:
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' ) );
}
如果我将菜单设置为 "order by price",我会看到产品仅按进货和缺货价格一起订购...
有人可以帮我解决这个问题吗?也许它已经在你的一些网站上实现了...))
你非常接近......你需要在你的代码中做一些改变得到多个 "orderby" 参数只使用一个字符串而不是一个数组 (每个参数由 space 在这个独特的字符串中):
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 文件。已测试并有效。
我想在存档页面上按库存状态(列表末尾缺货)和价格(从低到低)订购产品。 现在菜单顺序设置为默认值并使用此代码:
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' ) );
}
如果我将菜单设置为 "order by price",我会看到产品仅按进货和缺货价格一起订购... 有人可以帮我解决这个问题吗?也许它已经在你的一些网站上实现了...))
你非常接近......你需要在你的代码中做一些改变得到多个 "orderby" 参数只使用一个字符串而不是一个数组 (每个参数由 space 在这个独特的字符串中):
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 文件。已测试并有效。