按分号对元值进行订购

时间:2017-06-12 07:27:33

标签: php wordpress meta-key

我有一个帖子类型的音乐。为此我创建了自定义字段音乐长度。以01:50这种格式存储音乐持续时间 我希望按音乐长度显示订单。我通过meta_value和meta_value_num使用了这两个订单。但它不起作用。我的帖子代码是:

<code>
$args = array(
  'post_type' => 'music',
  'meta_key' => 'length',
  'orderby' => 'meta_value_num',
  'order' => 'DESC',
  'posts_per_page' => 10
);
$pop_posts = new WP_Query( $args );
</code>

我的问题是如何以分号格式(01:50,02:46,03:04,02:37)以元值命名帖子。所以带有元值03:04的帖子先来02:46然后等等!有什么办法吗?

1 个答案:

答案 0 :(得分:1)

使用以下代码

$args = array(
  'post_type' => 'music',
  'meta_key' => 'length',
  'orderby' => "REPLACE(meta_value_num, ':', '')",
  'order' => 'DESC',
  'posts_per_page' => 10
);
$pop_posts = new WP_Query( $args );

但请注意,对于大型数据集来说,它会非常慢,因为它必须为每一行重新计算新字符串。