如何在启动WP查询之前将函数应用于元数据值?

时间:2018-05-11 作者:AmintaCode

我有以下WP\\u查询参数:

$args = array(
   \'post_type\'         =>  \'my_post_type\',
   \'order\'     =>   \'ASC\',
   \'meta_key\'   =>  \'date\',
   \'orderby\'   =>  \'meta_value_num\'
);

我使用get_posts() 要调用新的WP\\U查询($args),请执行以下操作:

$posts = get_posts( $args );
现在,date 像ie一样保存在DB中2018-05-30 21:15:00.

因此,我将应用如下函数strtotime(\'meta_value\')转换历元时间中的值before 调用WP\\u查询并-after - 帖子将按历元时间值过滤,而不是按字符串过滤。

我如何才能做到这一点?

谢谢

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

您不能在这样的查询中运行任意PHP函数。WP_Query (其中get_posts() uses)不会检索帖子,然后用PHP对其进行过滤,它会转换为一个SQL查询,以查找结果。

正确的订购方式meta_value 在SQL中,按日期将其转换为DATETIME. 这条路WP_Query 允许您通过meta_type 论点从…起the documentation:

您还可以指定‘meta_type‘ 如果要将元值强制转换为特定类型。可能的值为“NUMERIC”、“BINARY”、“CHAR”、“DATE”、“DATETIME”、“DECIMAL”、“SIGNED”、“TIME”、“UNSIGNED”,与中相同‘$meta_query‘.

在您的情况下,您可以这样使用它:

$args = array(
    \'post_type\' => \'my_post_type\',
    \'meta_key\'  => \'date\',
    \'meta_type\' => \'DATETIME\',
    \'orderby\'   => \'meta_value\'
    \'order\'     => \'ASC\',
);
请注意,我没有对此进行测试,因为我没有合适的数据进行测试。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post