我正在尝试运行一个查询,该查询仅在其元值的日期字符串小于当前日期字符串时显示帖子。下面是一个示例;
<?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
所以基本上只是比较两个数值。
有人有什么想法吗?我尝试了相反的方法,使用了大于符号,但这也不想起作用。
我已经四次检查了帖子类型名称、值等,都是正确的。
SO网友:s1lv3r
你的代码对我来说似乎有效。您唯一可以尝试的是“NUMERIC”而不是“NUMERIC”,并且可以强制转换$current
到int
像date()
将返回字符串。
$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\',
但这是必要的。
请注意最后一行。。。对于调试这些东西非常有用。