Wordpress - Отправить письмо при изменении мета-значения - PullRequest
0 голосов
/ 24 января 2020

Я хочу сделать следующее. Я хочу автоматически отправлять электронную почту при публикации / обновлении сообщения, когда определенное значение поля сообщения изменилось.

  • В сообщении
  • Поле ACF, имеющее 4 параметра, скажем, [ 'draft', 'ready for group1', 'ready for group 2', 'ready']
  • Если это поле будет изменено при обновлении после отправки, отправьте письмо на «этот» адрес электронной почты.

Я думаю, мне нужно знать 2 вещи для этого. - Как и где (какое действие) мне нужно вставить пользовательский код при публикации / обновлении публикации - Как сравнить новые данные публикации со старым состоянием (и возможно ли это / доступно в приведенном выше действии)

1 Ответ

1 голос
/ 24 января 2020

Вы можете зацепить acf/save_post для этой цели. Прочитайте документацию здесь: https://www.advancedcustomfields.com/resources/acf-save_post/

Поскольку вы хотите, чтобы обратный вызов сработал до , значения сохраняются, чтобы сравнить старое значение с новым Имейте в виду, чтобы добавить приоритет меньше 10. Предполагая, что поле с 4 опциями имеет ключ поля field_4afd4af14415f:

function on_acf_post_save($post_id) {
  $post_type = get_post_type($post_id);
  if ($post_type === 'your-post-type') {
    $old_val = get_field('field_4afd4af14415f', $post_id);
    $new_val = $_POST['acf']['field_4afd4af14415f'];
    if ($old_val != $new_val) {
      // Send desired mail in here:
      // wp_mail(...);
    }
  }
}
add_action('acf/save_post', 'on_acf_post_save', 5, 1); // priority = 5

Если поле ACF находится не на верхнем уровне, а внутри Группа или Повторитель, вам придется адаптировать чтение кода из результатов $_POST['acf'] и get_field().

...