我想同谋以下。当某个帖子字段值已更改时,我想在帖子发布/更新时自动发送电子邮件。
[ 'draft', 'ready for group1', 'ready for group 2', 'ready']
我想我需要知道两件事。-在发布/更新后,我需要如何以及在何处(执行什么操作)插入自定义代码-如何将新发布的数据与旧状态进行比较(这在上面的操作中是否可行/可用)
为此,您可以挂钩到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()
结果中读取的代码。