Обновление таксономии сообщения при обновлении определенной функции acf_form () - PullRequest
0 голосов
/ 31 мая 2019

В настоящее время я создаю родительский портал для поступления в школу. Ученики создаются как пользовательский тип сообщения (pupil), когда пользователь (родитель) регистрируется - родитель является автором каждого сообщения pupil. Эти pupil сообщения имеют специальную таксономию под названием status, которая определяет, были ли отправлены и проверены формы приема ученика. Я использую acf_form() для создания форм допуска, которые отображаются на веб-интерфейсе и заполняются родительским пользователем. Каждый ученик в настоящее время имеет 6 полевых групп ACF (6 классов). Я получаю ключи этих групп полей и перебираю их с помощью цикла foreach для отображения 6 отдельных форм acf_form() для каждой из групп полей.

Когда создается сообщение pupil, для него status автоматически устанавливается значение «в процессе», т. Е. Родитель заполняет формы.

Что я хочу

Когда пользователь обновляет одну конкретную форму / группу полей из 6, я хочу, чтобы таксономия status ученика была изменена с "в процессе" на "отправлено". Чтобы пояснить далее, эта форма является окончательной формой, которую пользователь / родитель должен заполнить, поэтому после нажатия кнопки acf_form() обновить таксономию следует обновить.

Так по сути ...

Я ищу способ подключиться к действию сохранения acf_form(), сделать проверку, чтобы увидеть, была ли обновленная форма определенной формы (по ключу группы полей?), А затем обновить status таксономия должности, на которую была отправлена ​​форма.

Что я пробовал

Я пытался использовать фильтр pre_save_post ACF и действие save_post, но я не могу найти способ проверить, какая группа полей была сохранена, поскольку эти две функции просто дают мне $post_id. Я просто добавил код из ACF Docs и попытался print_r() / echo данных из функций, чтобы увидеть, есть ли способ проверить ключ группы полей, но ничего не происходит напечатано на странице при обновлении acf_form().

Итак ...

Кто-нибудь знает, как я могу правильно подключиться к этому действию и получить правильные данные, которые позволят мне выполнять необходимые проверки?

1 Ответ

0 голосов
/ 31 мая 2019

Я нашел способ сделать то, что искал, но мне кажется, что это не очень хороший или надежный способ сделать это, поэтому я все еще открыт для предложений / советов.

Код:

function my_acf_save_post( $post_id ) {

    $keys_of_specific_field_group = array(
        'field_5ce2970bc9fbd' => '',
        'field_5ce29741c9fbe' => '',
        'field_5ce297c7c9fc1' => '',
        'field_5ce297ddc9fc2' => '',
        'field_5ce297fac9fc3' => '',
        'field_5ce2980ec9fc4' => '',
        'field_5ce29874c9fc5' => '',
        '_validate_email' => ''
    );

    if ( $_POST['acf'] === $keys_of_specific_field_group ) {

        wp_set_post_terms($post_id, array(21), 'status');

    }

}

add_action('acf/save_post', 'my_acf_save_post', 1);

По сути, я просто проверяю, совпадают ли ключи полей, возвращенные с $_POST['acf'], с ключами полей полей в конкретной форме, которую я хочу проверить, и если они это делают, я обновляю сообщение status taxonomy (array(21) - это идентификатор «представленного» термина, который я хочу установить).

Надеюсь, есть более хороший / лучший способ сделать это так, как если бы к группе полей были добавлены какие-либо поля. Мне придется вручную обновить код.

...