你知道你的wp_mail()
功能是否正常工作?你知道你的功能是否在链的更高层失败了吗?
我会像这样重新编写函数,这使得它更容易阅读,也更高效,因为我们只运行我们绝对需要满足特定条件的函数。
此外,我已删除get_field()
函数调用,它只是get_post_meta()
.
存储$post_id = $post->ID
也被删除了,因为在这个阶段,不需要出于任何特定原因操纵或缓存ID,所以它只是稍微清理一下。
如果你知道specific_users
自定义字段返回序列化数组,然后可以添加true
参数后的meta_key
要接收回未序列化的数组,请忽略true
价值
isset
将返回true,即使数组为空,并且如果数组中没有结果,WordPress实际上将返回空数组,除非true
参数设置为在这种情况下将返回空字符串,因此调用isset
已删除并替换为!empty($array)
.
从这一点上,您可以更轻松地调试函数。。。
function notify_growers($post) {
//if NOT post type \'grower_posts\' then exit;
if ( $post->post_type != \'grower_posts\' )
return;
//if email already sent then exit.
if ( get_post_meta( $post->ID, \'emailsent\', true ) )
return;
//if email not sent then get an array of users to email
$specific_users = get_post_meta($post->ID, \'specific_users\');
//if $specific_users is an array and is not empty then send email.
if(is_array($specific_users) && !empty($specific_users)) {
foreach($specific_users as $specific_user) {
//add mail logic here, $to, $subject, $message
wp_mail($to, $subject, $message );
}
unset($specific_user);
//prevent emails from being sent by updating post meta field
update_post_meta( $post->ID, \'emailsent\', true );
}
}
add_action( \'draft_to_publish\', \'notify_growers\' );
add_action( \'new_to_publish\', \'notify_growers\' );