具有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\',
),
)
);