Wordpress过滤器在两个自定义字段日期之间发布

时间:2013-11-19 22:27:49

标签: wordpress custom-fields

我真的在寻找答案,并没有太多关闭,除非我遗漏了一些明显的东西所以任何帮助甚至指导从哪里开始这将是非常感激

好的

我已经设置了一个名为“job_listing”的自定义帖子类型,其中包含两个名为“dateFrom”“dateTo”的自定义字段

我希望能够使用名为两个字段的表单过滤这些帖子 “dateFrom”“dateTo”

如果输入的表单字段值在帖子“dateFrom”“dateTo”的范围内,则应显示帖子

设置表单没有问题但是如何在两个自定义字段值之间进行查询让我很好并真正难倒

被修改##

好的,这就是我到目前为止所得到的

下面是表单,目前我手动输入此格式的日期24/11/2013 我打算使用日历输入字段,但我可以稍后再这样做

<form method="get" action="<?php bloginfo('url'); ?>/">
<input type="hidden" name="post_type" value="job_listing" />
<input name="search_dateFrom" id="search_dateFrom" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Search':this.value;" value="Search Date From" />
<input name="search_dateTo" id="search_dateTo" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Search':this.value;" value="Search Date To" />
<input type="submit" name="submit" />
</form>

下面是自定义结果模板,因为您可以看到我试图显示post_type“job_listing”的结果,然后尝试仅过滤在表单输入范围内具有自定义字段开始日期和结束日期的帖子< / p>

<?php 
$args = array(
    'post_type' => array('job_listing'),
    'post_status' => 'publish',
);
$args['meta_query'][] = array(
    'key' => 'dateFrom',
    'value' => $s,
    'compare' => 'LIKE',
);

$args['meta_query'][] = array(
    'key' => 'dateTo',
    'value' => $s,
    'compare' => 'LIKE',
);

$a = strtotime($custom['dateFrom']); 
$b = strtotime($custom['dateTo']); 
$x = strtotime($time_from_form);

if( $x > $a && $x < $b ) {$query = new WP_Query( $args );
if ( $query->have_posts() ): while ( $query->have_posts() ) : $query->the_post(); 
?>

<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>

<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_query(); ?>
<?php } ?>

我很难过,任何想法,我出错了,谢谢你们的时间 DW

1 个答案:

答案 0 :(得分:0)

您可以使用strtotime将日期转换为秒,这样您就可以使用以下内容:

if ( strtotime($time_from_form)) >= strtotime($custom['availableDateStart']) && $strtotime($time_from_form) <= strtotime($custom['availableDateEnd']) ) {
    //do your stuff
}

基本上,这会将所有3个日期转换为秒。所以就像

$a = strtotime($custom['availableDateStart']); // 12345
$b = strtotime($custom['availableDateEnd']); // 54321
$x = strtotime($time_from_form); // 3333

if( $x > $a && $x < $b ) {
    //do your stuff
}

希望有所帮助:)