Я впервые выкладываю макет на Wordpress, поэтому прошу прощения, если вопрос слишком простой и очевидный:
У меня на страничке есть расписание грядущих мастер-классов. И мне нужно, чтобы сообщения отображались в порядке возрастания даты (дата указана в заголовке сообщения или, если это более удобно, я могу создать настраиваемое поле даты с датой). Формат даты - ДД.ММ.ГГ
Также необходимо, чтобы сообщения с прошлыми датами не отображались.
Подскажите, пожалуйста, как это реализовать?
Вот мой текущий код для сообщений:
<?php
$args = array(
'numberposts' => 0,
'category_name' => schedule,
'orderby' => 'title',
'order' => 'ASC',
'include' => array(),
'exclude' => array(),
'meta_key' => '',
'meta_value' =>'',
'post_type' => 'post',
'suppress_filters' => true,
);
$posts = get_posts( $args );
foreach($posts as $post){ setup_postdata($post);
?>
<div class="col-md-4 col-sm-6">
<div class="content-wrapper bg-gray schedule-card">
<div class="day"><span><?php the_field('week_day') ?></span><span><?php the_title() ?></span></div>
<a class="event" href="<?php the_field('mc_descr_link_1') ?>"><span class="event-time"><?php the_field('time-mc-1') ?></span><span class="event-name"><?php the_field('mc-1') ?></span></a>
<a class="event" href="<?php the_field('mc_descr_link_2') ?>"><span class="event-time"><?php the_field('time-mc-2') ?></span><span class="event-name"><?php the_field('mc-2') ?></span></a>
<a class="event" href="<?php the_field('mc_descr_link_3') ?>"><span class="event-time"><?php the_field('time-mc-3') ?></span><span class="event-name"><?php the_field('mc-3') ?></span></a>
</div>
</div>
<?php
}
wp_reset_postdata();
?>
3 ответа
Было бы лучше, если бы вы создали настраиваемое поле для этих полей даты. Или вы можете напрямую интегрировать это поле даты с собственным полем «дата». Но если вы хотите сохранить их отдельно от поля post_date, то вам нужно реализовать следующее:
Создайте настраиваемое поле, содержащее те значения дат, о которых вы говорите. (CUSTOM_FIELD_WHICH_CONTAINS_DATE_VALUE)
Измените массив $ args на это:
$args = array ( 'category_name' => 'schedule', 'orderby' => 'meta_value', 'meta_key'=>'CUSTOM_FIELD_WHICH_CONTAINS_DATE_VALUE', 'order'=>'ASC' 'post_type' => 'post');
Обратите внимание, что я также удалил ненужные аргументы из массива выше.
Если вы используете настраиваемое поле для даты:
$today = date('Y-m-d');//date format need to change according to your records
$args = array(
'numberposts' => 0,
'category_name' => schedule,
'meta_key' => 'CUSTOM_DATE_FIELD_NAME',
'meta_type'=>'DATE',
'meta_query' => array(
array(
'key' => 'CUSTOM_DATE_FIELD_NAME',
'value' => $today,
'compare' => '>='
)
),
'orderby' => 'meta_value_date',
'order' => 'ASC'
'exclude' => array(),
'post_type' => 'post',
'suppress_filters' => true,
) ;
Измените формат CUSTOM_FIELD_DATE на Y-m-d Пример: 2017-02-27
$today = date('Y-m-d');//Format is 2018-01-28
$args = array(
'post_type' => 'post',
'post_status'=>'publish',
'meta_key'=>'date_field',
'meta_type'=>'DATE',
'orderby' => 'meta_value',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'date_field',
'value' => $today,
'compare' => '>='
)
),
);
$posts= new WP_Query( $args );
foreach($posts->posts as $post){ setup_postdata($post);
?>
<div class="col-md-4 col-sm-6">
<div class="content-wrapper bg-gray schedule-card">
<div class="day"><span></span><span><?=$post->post_title;?></span></div>
</div>
</div>
<?php
}
wp_reset_postdata ();
Похожие вопросы
Новые вопросы
php
PHP - это широко используемый высокоуровневый, динамический, объектно-ориентированный и интерпретируемый язык сценариев, в первую очередь предназначенный для серверной веб-разработки. Используется для вопросов о языке PHP.