META_QUERY比较不执行我希望它执行的操作

时间:2013-10-11 作者:Poisontonomes

我正在尝试运行一个查询,该查询仅在其元值的日期字符串小于当前日期字符串时显示帖子。下面是一个示例;

<?php
    $current = date(\'Ymd\'); // Eg: today would be 20131011
    $date = get_post_meta($post->ID, \'event_date\', true); // (Eg; 19690816)
    $args (
        \'post_type\' => \'event\',
        \'posts_per_page\' => -1,
        \'meta_query\' => array(
            \'key\'     => \'event_date\',
            \'value\'   => $current,
            \'compare\' => \'<\',
            \'type\' => \'numeric\'
        ) 
    );
?>
但它似乎不起作用。

这个$date 值由元框定义,并返回与$current 所以基本上只是比较两个数值。

有人有什么想法吗?我尝试了相反的方法,使用了大于符号,但这也不想起作用。

我已经四次检查了帖子类型名称、值等,都是正确的。

2 个回复
SO网友:s1lv3r

你的代码对我来说似乎有效。您唯一可以尝试的是“NUMERIC”而不是“NUMERIC”,并且可以强制转换$currentintdate() 将返回字符串。

$current = (int)date(\'Ymd\');
要进一步调试,可以将其直接放在代码下面:

global $wpdb;
var_dump( $wpdb->last_query );
然后,您将获得完整的查询,并可以将其粘贴到sql shell(phpMyAdmin或任何您喜欢的内容)中,以查看它的错误。

如果这不能解决您的问题,请使用完整的SQL查询编辑您的问题,我会查看一下。

SO网友:s_ha_dum

A.meta_query 是数组的数组。您只有一个数组(和一个语法错误)。您需要:

$current = date(\'Ymd\'); // Eg: today would be 20131011
$date = get_post_meta($post->ID, \'event_date\', true); // (Eg; 19690816)
$args = array(
    \'post_type\' => \'event\',
    \'posts_per_page\' => -1,
    \'meta_query\' => array(          // an array
      array(                        // of arrays
        \'key\'     => \'event_date\',
        \'value\'   => $current,
        \'compare\' => \'<\',
        \'type\' => \'numeric\',
      )
    ) 
);
$q = new WP_Query($args);
var_dump($q->request);
我对此表示怀疑\'type\' => \'numeric\', 但这是必要的。

请注意最后一行。。。对于调试这些东西非常有用。

结束

相关推荐

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

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