具有WP_Query 通过设置meta_key 参数,您希望能够按照哪个键进行排序,以及orderby 到meta_value (或meta_value_num 如果要对值进行数字排序)。
这是参数的样子:
$args = array(
\'meta_key\' => \'_product_new\',
\'orderby\' => \'meta_value_num\',
\'meta_query\' = array(
\'relation\' => \'OR\',
array(
\'key\' => \'_product_new\',
\'value\' => \'1\',
),
array(
\'key\' => \'_product_almost_new\',
\'value\' => \'1\',
),
array(
\'key\' => \'_product_old\',
\'value\' => \'1\',
)
)
);
将查询所有具有
_product_new,
_product_almost_new, 或
_product_old, 然后订购,这样
_product_new 将位于顶部或底部(取决于
order).
问题是这只会按一个元值排序,_product_new, 忽略其他人。但这只是WP_Query. 不可能按多个元数据对结果进行排序
一个潜在的解决方案是使用一个元密钥,例如_product_age, 并将其设置为一个数字值,该值表示要排序的每个状态。因此_product_new 作为布尔值,设置_product_age 到1, 而不是_product_almost_new, 设置_product_age 到3, 而不是_product_old, 设置_product_age 到2.
然后您可以使用这些参数按您想要的方式进行排序;
$args = array(
\'meta_key\' => \'_product_age\',
\'orderby\' => \'meta_value_num\',
\'order\' => \'ASC\',
\'meta_query\' = array(
array(
\'key\' => \'_product_age\',
\'value\' => array( 1, 2, 3 ),
\'compare\' => \'IN\',
),
)
);