我有一个自定义的帖子类型jobs
和带有键的自定义字段expiry-date
用户输入日期后,帖子将不再显示。
这是我目前的代码。。。
$loop = new WP_Query( array(
\'post_type\' => \'jobs\',
\'posts_per_page\' => -1,
\'order\' => \'ASC\',
\'orderby\' => \'date\',
\'meta_query\' => array (
\'key\' => \'expiry-date\',
\'value\' => date(\'d/m/Y\',strtotime("today")),
\'type\' => \'DATE\',
\'compare\' => \'>=\'
)
));
if (have_posts()) : while ($loop->have_posts()) : $loop->the_post();
[display content]
endwhile; else:
[display "no vacancies" message]
endif;
中的日期
expiry-date
以dd/mm/yyyy格式存储(尽管有些帖子可能会将此字段设置为空)。我只想返回过期日期大于今天日期(或未设置日期)的查询中的帖子-我尝试了各种
value
s和
compare
类型我缺少什么?
<小时>EDITED TO ADD SOLUTION:
在函数中的函数中。php保存元数据,我创建了一个额外的自定义字段expiry-date-formatted
以正确的格式存储日期,如果未设置日期,则将值设置为“true”:
update_post_meta($post_id, \'expiry-date\', $date);
if (!empty($date)) {
update_post_meta($post_id, \'expiry-date-formatted\', date(\'Y-m-d\', strtotime($date)) );
} else {
update_post_meta($post_id, \'expiry-date-formatted\', \'true\' );
}
然后更新meta\\u查询:
\'meta_query\' => array(
\'relation\' => \'OR\',
array(
\'key\' => \'expiry-date-formatted\',
\'value\' => date(\'Y-m-d\',strtotime("today")),
\'compare\' => \'>=\',
\'type\' => \'DATE\'
),
array(
\'key\' => \'expiry-date-formatted\',
\'value\' => \'true\',
\'compare\' => \'=\'
)
)
此外,我将jQuery UI datepicker的输入格式化为“2015年2月5日”,以避免混淆。
jQuery(function($) {
$( "#ce-job-expiry-date" ).datepicker({ dateFormat: \'dd M yy\' });
});
最合适的回答,由SO网友:mistertaylor 整理而成
在函数中的函数中。php保存元数据,我创建了一个额外的自定义字段expiry-date-formatted
以正确的格式存储日期,如果未设置日期,则将值设置为“true”:
update_post_meta($post_id, \'expiry-date\', $date);
if (!empty($date)) {
update_post_meta($post_id, \'expiry-date-formatted\', date(\'Y-m-d\', strtotime($date)) );
} else {
update_post_meta($post_id, \'expiry-date-formatted\', \'true\' );
}
然后更新meta\\u查询:
\'meta_query\' => array(
\'relation\' => \'OR\',
array(
\'key\' => \'expiry-date-formatted\',
\'value\' => date(\'Y-m-d\',strtotime("today")),
\'compare\' => \'>=\',
\'type\' => \'DATE\'
),
array(
\'key\' => \'expiry-date-formatted\',
\'value\' => \'true\',
\'compare\' => \'=\'
)
)
此外,我将jQuery UI datepicker的输入格式化为“2015年2月5日”,以避免混淆。
jQuery(function($) {
$( "#ce-job-expiry-date" ).datepicker({ dateFormat: \'dd M yy\' });
});