2013-11-19 2 views
0

Я действительно искал для ответа на этот вопрос, и не очень близко подходит, если им не хватает чего-то очевидного, поэтому любая помощь или даже указатели на то, где начать работу, будут высоко оцененыWordpress фильтрует сообщения между двумя настраиваемыми датами поля

OK

Я создал пользовательский тип записи под названием «job_listing», содержащие два пользовательских поля, названное «dateFrom» «dateTo»

Я хочу, чтобы иметь возможность фильтровать эти сообщения, используя форму с двумя полями именем "dateFrom" "dateTo"

Если поля формы введены значения в пределах от должностей «dateFrom» «dateTo», то сообщение должно быть отображено

Настройки формы не является проблемой, но как запросить между двумя пользовательскими значениями полей имеет меня хорошо и действительно озадачен

Отредактировано ##

ОК, так что это то, что ив получил до сих пор

Ниже форма, в настоящее время я вручную ввода даты в этом формате 24/11/2013 я планирую использовать поле ввода календаря, но я могу сделать это бит l Атера

<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», а затем пытается отфильтровать только сообщения, которые имеют произвольное поле даты начала и окончания в пределах диапазона из формы ввода

<?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 } ?> 

Im тупик, любые идеи, где им будет не так, спасибо за ваше время ребята DW

+1

Чтобы разместить вид обновления вы пытались представить в качестве предлагаемого редактирования, вы должны добавить его в свой пост, а не кого-то другого ответа. Обратите внимание, что саморедактирования даже не подлежат рассмотрению, поэтому они не будут отвергнуты (но, пожалуйста, опубликуйте его как дополнение, а не замените исходный вопрос). –

ответ

0

вы можете использовать strtotime для преобразования даты в секунды, так что вы будете работать с someth например:

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 
} 

Надежда, что помогает :)

+0

Спасибо, что shortbus выглядит очень хорошей отправной точкой для меня, плохой работа и сообщите, что я придумал на следующий день или около того. – Dubcode

Смежные вопросы