Сначала ссылка на мой сайт: http://villatacchini.ch
У меня есть 2 настраиваемых поля: «дата начала» и «дата окончания».
Если администратор не установил поле «дата окончания», я хочу динамически установить дату окончания с датой начала.
Является ли это возможным ?
Я использую ACF для своего поля, но при необходимости я могу экспортировать свои поля в php: для добавления в файл functions.php
Я использую meta_key для запроса.
Первоначально я использовал «дату начала», чтобы отсортировать мое событие. Но когда событие проходит через пару дней, оно исчезает после второго дня.
Так что теперь я использую «дату окончания», но для событий одного дня не определена «дата окончания».
Для информации, если я определил «дату окончания» для своего мероприятия в один день: это работает. Но я бы упростил публикацию события, если для события одного дня не нужно устанавливать дату окончания (так как она совпадает с датой начала)
мой код:
$args = array(
'post_type'=>'evenement','meta_key'=>'end-date','orderby'=>'meta_value_num' , 'order'=>'ASC' , 'posts_per_page'=> 3,
'meta_query'=> array (array('key' => 'end-date', 'compare' => '>=', 'value' => $current_date, 'type' => 'numeric',))
);
query_posts( $args );
Я очень мало говорю по-английски извините, если я не понимаю
Возможно, проблему можно решить, если заполнить поля на момент публикации поста.
Можно ли установить значение по умолчанию для поля «дата окончания» с полями «дата начала»
Я нашел ваш вопрос, потому что у меня точно такая же проблема, как и у вас. Мой ответ приходит через два года, но, возможно, он может помочь кому-то, кто испытывает ту же проблему.
Чтобы получить его, используйте фильтр ACF, выполненный при сохранении значения настраиваемого поля.
// Auto-populate end date if it is empty.
function update_end_date_cf( $value, $post_id, $field ) {
//NOTE: don't use get_field() because it retrieves the value
//in a preformatted way different as it is saved in database
$end_date = get_post_meta( $post_id, 'end_date_cf_name', true );
$start_date = get_post_meta( $post_id, 'start_date_cf_name', true );
if ($end_date == '' && $start_date != '') {
$value = $start_date;
}
return $value;
}
add_filter('acf/update_value/name=end_date_cf_name', 'update_end_date_cf', 10, 3);
Надеюсь, поможет!
Логика:
if end-date is empty
set end-date equal to start-date
это будет выглядеть примерно так
<?php if( get_field('end-date') ): ?>
<?php $end-date = $start-date ?>
//Your code here
<?php endif; ?>