【问题标题】:Order post by meta value with semicolon使用分号按元值排序帖子
【发布时间】:2017-11-13 14:04:35
【问题描述】:

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

【问题讨论】:

标签: php wordpress meta-key


【解决方案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 );

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

【讨论】:

  • 'orderby' => "REPLACE(meta_value_num, ':', '')",不起作用
  • 你有没有得到任何错误?当我使用相同的数据结构运行相同的查询时
  • 它没有显示任何错误。它显示所有帖子,但顺序不正确。
  • 你从哪里得到这个代码 'orderby' => "REPLACE(meta_value_num, ':', '')" REPLACE 方法。有没有文件
  • 你可以在这里发布你的原始 sql 查询
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-10
  • 2014-04-10
  • 2017-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多