好啊首先,`$query->set(\'orderby\',\'pa\\u od\');\'很可能什么都不会做。你不能按字符串排序,以为WordPress会猜出那是什么。
以下是可能的orderby
值:
https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters
如果要按自定义字段订购,则必须按以下方式进行:
$query->set( \'meta_key\', \'pa_od\' );
$query->set( \'orderby\', \'meta_value\' );
$query->set( \'order\', \'ASC\' );
因为您想将该元值视为数字,所以这才是您真正想要的:
$query->set( \'meta_key\', \'pa_od\' );
$query->set( \'orderby\', \'meta_value_num\' );
$query->set( \'order\', \'ASC\' );
你的函数是一个动作,所以你不需要返回任何东西-返回的值无论如何都会被忽略。。。下面是所有代码:
add_action( \'woocommerce_product_query\', \'imcar_custom_product_query\' );
function imcar_custom_product_query( $query ) {
if( ! $query->is_main_query() )
return;
$query->set( \'meta_key\', \'pa_od\' );
$query->set( \'orderby\', \'meta_value_num\' );
$query->set( \'order\', \'ASC\' );
}