按分号用分号命令发帖

问题描述:

我有一个帖子类型的音乐。为此我创建了自定义字段音乐长度。以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,依此类推!有什么办法吗?

+0

请参阅https://*.com/questions/6158726/php-compare-time ans - https://*.com/questions/36609349/compare-the-current-date-to-a -timestamp-in-wordpress-with-meta-query – htmlbrewery

使用下面的代码

$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); 

但是请注意,这将是对大数据集的速度很慢,因为它必须重新计算,每行的​​新字符串。

+0

'orderby'=>“REPLACE(meta_value_num,':','')”,不起作用 – maddy

+0

你有没有得到任何错误?当我使用相同的数据结构 – pravindot17

+0

运行相同的查询时,它没有显示任何错误。它显示所有帖子,但没有正确的顺序。 – maddy