自定义 wordpress 元查询(无结果)

Posted

技术标签:

【中文标题】自定义 wordpress 元查询(无结果)【英文标题】:Custom wordpress meta query (no result) 【发布时间】:2016-04-07 07:34:48 【问题描述】:

问题

我在 Wordpress 中循环浏览自定义帖子类型(高级自定义字段)。我只想显示 start_date 等于 $newdate 变量的事件,在开头定义。

start_date 的格式为 YYYY-MM-DD HH:mm(与 $newdate 相同)。 $newdate 设置为一天的开始,因此我不会排除一天中不同时间的事件,并将比较设置为大于(只是为了测试查询)。

但是我没有得到任何结果。

<?php
$newdate = date('Y-m-d 00:00');
//<-- Start the Loop. -->!
$args = array( 
        'post_type' => 'epsa_events', 
        'posts_per_page' => 5,
        'orderby' => 'meta_value',
        'order' => 'ASC',
        'meta_query' => array (
            array(
            'key' => 'start_time',
            'value'   => $newdate,
            'compare' => '>=',
            'type' => 'datetime' 
            )
        )
    );

$loop = new WP_Query( $args );

【问题讨论】:

如果你的 start_time 是这种格式,那么它不是 datetime 而是 varchar。所以你将 2 个字符串与无法控制的结果进行比较。 你建议什么时间格式 【参考方案1】:

试试这个查询:-

'meta_key'   =>  'event-start-date',
'meta_query' => array (
            array(
            'key' => 'start_time',
            'value' => date('Ymd',strtotime($newdate)),
            'compare' => '>=',
            'type' => 'date' 
            )
        )

【讨论】:

这个改动没有结果。 将类型日期时间更改为日期 你有没有得到这个工作,我也试图按小时范围过滤日期时间,但没有任何运气@rmilosic @NickeyK 抱歉,很久以前,不幸的是我似乎找不到源代码:/【参考方案2】:

我猜你这里有一些小错误。

首先,如果您使用'orderby' =&gt; 'meta_value',则必须将'meta_key' =&gt; KEYVALUE 添加到您的$args,其中KEYVALUE 是您要用于排序的自定义字段的名称。查看Order & Orderby Parameters 上的WP_Query 文档。

其次,假设您的start_date 字段类型是日期时间选择器,如果您想获取所有已经开始的事件,那么您使用了错误的比较运算符。因此,假设您还想按日期排序,您的 $args 代码应该是:

$args = array(
    'post_type'      => 'epsa_events',
    'posts_per_page' => -1,
    'orderby'        => 'meta_value',
    'order'          => 'ASC',
    'meta_key'       => 'start_time',
    'meta_type'      => 'DATETIME'
    'meta_query'     => array (
        array(
            'key'     => 'start_time',
            'compare' => '<=',
            'value'   => $newdate,
            'type'    => 'DATETIME'
        )
    )
);

看看 日期时间选择器 documentation 也是。

我希望这会有所帮助!

【讨论】:

以上是关于自定义 wordpress 元查询(无结果)的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress 自定义 SQL 以获取三个具有给定元值的帖子

Wordpress - 从自定义帖子类型查询第一个和名称

在 Wordpress 中发布帖子并根据自定义字段元填充字段时运行 SQL 函数

如何通过分类术语从自定义 WordPress MySQL 查询中排除结果

具有多个 postmeta 左连接的 Wordpress 自定义 SQL 查询

WordPress WP_Query:根据自定义元值显示自定义帖子类型,并按另一个自定义元值排序