Значение настраиваемого поля WordPress из другого поля (если оно пустое)

Сначала ссылка на мой сайт: 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 );

Я очень мало говорю по-английски извините, если я не понимаю

Возможно, проблему можно решить, если заполнить поля на момент публикации поста.
Можно ли установить значение по умолчанию для поля «дата окончания» с полями «дата начала»

0

Решение

Я нашел ваш вопрос, потому что у меня точно такая же проблема, как и у вас. Мой ответ приходит через два года, но, возможно, он может помочь кому-то, кто испытывает ту же проблему.

Чтобы получить его, используйте фильтр 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);

Надеюсь, поможет!

1

Другие решения

Логика:

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; ?>
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector