#php #wordpress
#php #wordpress
Вопрос:
Я запрашиваю пользовательский тип сообщения с именем «события», который имеет мета-поле с именем «event_date», которое хранится в формате даты. Я хочу иметь три или четыре отдельных запроса, каждый из которых ищет сообщения в течение определенных периодов времени. Первым запросом будут все сообщения за текущий месяц, затем еще один за следующий месяц, затем следующий месяц и так далее. Важно, чтобы это были отдельные запросы, а не один.
Я могу запрашивать между установленными датами, используя приведенный ниже код, но я хочу сделать их динамическими и иметь возможность добавлять переменную даты начала и переменную даты окончания на основе текущей даты. Я думал об использовании чего-то похожего на этот код, с которым я столкнулся, который успешно дает мне название месяца, но я изо всех сил пытаюсь использовать это в своем запросе WordPress.
<?php
$d = new DateTime( 'now' );
$d->modify( 'first day of this month' );
echo $d->format( 'F' ), "n";
?>
Могу ли я в любом случае интегрировать динамические переменные даты начала и даты окончания, которые могут быть текущим месяцем, 1, 2, 3 месяца и т. Д. По мере необходимости? Я ценю любую помощь, которую вы можете предоставить.
Мой код запроса:
<?php
$args = array(
'post_type' => 'event',
'meta_key' => 'event_date',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'showposts' => 20,
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'event_date',
'value' => '2014-06-01', // Lowest date value
'compare' => '>='
),
array(
'key' => 'event_date',
'value' => '2014-06-31', // Highest date value
'compare' => '<='
)
)
);
$event_posts = new WP_Query($args);
if($event_posts->have_posts()) :
while($event_posts->have_posts()) :
$event_posts->the_post();
?>
POST CONTENT HERE
<?php
endwhile;
else:
?>
Oops, there are no posts.
<?php
endif;
?>
Ответ №1:
Взгляните на http://www.php.net/manual/function.mktime.php . Вы можете использовать что-то вроде этого:
$month_add = 0; // current month, add value for the next months
$low_date = date("Y-m-d", mktime(12, 0, 0, date("n") $month_add, 1, date("Y")));
$high_date = date("Y-m-d", mktime(12, 0, 0, date("n") $month_add 1, 1, date("Y")));
Измените сравнение для самой высокой даты на:
'compare' => '<'
Ответ №2:
используйте этот синтаксис … легко читается и используется:
array(
'key' => 'event_date',
'value' => date('Y-m-d',strtotime(' 1 month')),
'compare' => '<='
)
получайте удовольствие, играя с ним и проверяйте относительные форматы для всех ваших возможностей