Создать поле ретранслятора ACF из внешнего интерфейса

Я пытаюсь создать форму, которую пользователи могут использовать для публикации из внешнего интерфейса сайта WordPress.

Однако у меня проблемы с созданием полей повторителя. Я пробовал несколько способов, но ничего не работает:

$periods = $_POST['periods'];

    // for each perdiod, save the start/end date and notes
    for ($p = 1; $p <= $periods; $p++) {

        update_sub_field( array('date', $p, 'start-date'), $_POST['p'.$p.'-start-date'] );
        update_sub_field( array('date', $p, 'end-date'), $_POST['p'.$p.'-start-date'] );
        update_sub_field( array('date', $p, 'notes'), $_POST['p'.$p.'-start-date'] );

    } // end periods loop

и

    // for each perdiod, save the start/end date and notes
    for ($p = 1; $p <= $periods; $p++) {

        add_post_meta($post_id, 'date_'.$p.'_start-date', $_POST['p'.$p.'-start-date']);
        add_post_meta($post_id, 'date_'.$p.'_end-date', $_POST['p'.$p.'-end-date']);
        add_post_meta($post_id, 'date_'.$p.'_notes', $_POST['p'.$p.'-notes']);

    } // end periods loop

Но это никак не влияет на сам пост.

Репитер настроен так:

Дата (репитер) ->

  • дата начала (поле)

  • дата окончания (поле)

  • заметки (поле)

Там также есть еще одно поле повторителя (повторитель внутри повторителя), но я хочу, чтобы оно работало первым!

Любые идеи?


person lukeseager    schedule 16.05.2014    source источник


Ответы (1)


Чтобы создать сообщение, вам нужно будет использовать фактические ключи полей для каждого поля. Вы не можете использовать имя поля, потому что запись в базе данных еще не создана. Дополнительную информацию см. В документации Эллиота, здесь.

Вот как может выглядеть код для этого:

$event_field_key = 'field_534d3f17f3ca2';

// for each perdiod, save the start/end date and notes
for ($p = 1; $p <= $periods; $p++) {

    $events[] = array(
        '_start-date'   => $_POST['p'.$p.'-start-date'],
        '_end-date'     => $_POST['p'.$p.'-end-date'],
        'date'          => $_POST['p'.$p.'-notes']
    );

} // end periods loop

update_field($event_field_key, $events, $post_id);

Вам нужно будет получить ключ поля для этого поля, чтобы это работало правильно. Для этого перейдите на экран настраиваемых полей и найдите параметры экрана в правом верхнем углу. Установите флажок "Показать ключи поля". Ключи ваших полей теперь должны отображаться справа от имени поля в списке настраиваемых полей. Используйте это, чтобы добавить поле.

Вот инструкции Эллиота, если мои слова не имели смысла .

person codescribblr    schedule 16.05.2014
comment
Прекрасно, спасибо. Просто быстрый, есть еще один повторитель в поле date повторителя. Могу ли я просто сослаться на этот ключ поля, как вы это сделали здесь? Или мне нужно было бы сделать что-то другое для ретранслятора в ретрансляторе? - person lukeseager; 19.05.2014
comment
Я никогда этого не пробовал. Я думаю, вам просто нужно создать другой массив внутри массива событий для второго репитера. Я не верю, что у вас есть ключ поля для субповторителей. Я думаю, вы обнаружите, что, когда вы показываете ключи полей, их нет для подполей. - person codescribblr; 19.05.2014