我在WP中有一个名为“work”的自定义帖子类型,每次自定义字段“socialmedia”的值为“yes”时,都需要向管理员发送一封电子邮件。以下代码可以正常发送邮件,但不包括电子邮件中的自定义字段值:
function email_members($post_ID) {
global $post;
if ( 'work' == get_post_type($post_ID) ){
$social = get_post_meta($post_ID, 'socialmedia', true);
mail('me@example.com', get_the_title($post_ID), $social);
}
return $post_ID;
}
add_action('publish_work', 'email_members');
有什么想法吗?
由于
答案 0 :(得分:1)
摆脱global $post
(似乎没有使用),并添加一些var_dump();
行来准确显示变量包含的内容,帮助您确定错误。
此外,如果socialmedia
为“是”,您提及要发送电子邮件,但是您的代码中没有检查该内容?
function email_members($post_ID) {
var_dump($post_ID);
var_dump(get_post_type($post_ID));
if ( 'work' == get_post_type($post_ID) ){
$social = get_post_meta($post_ID, 'socialmedia', true);
var_dump($social);
if ( $social === 'yes' ) {
mail('me@example.com', get_the_title($post_ID), $social);
}
}
die(); // Remove this after testing, it'll stop WP redirecting you so you can see what your variables contain.
return $post_ID;
}
add_action('publish_work', 'email_members');
答案 1 :(得分:1)
在发送电子邮件之前检查元值。
if( 'yes' == ($social = get_post_meta($post_ID, 'socialmedia', true)) )
{
mail('me@example.com', get_the_title($post_ID), $social);
}
答案 2 :(得分:0)
如果你已经通过函数传递了$ post_ID,那么全局的意义何在?怎么样......
if(get_post_type($post_ID) === "work"){
// do stuff
}
确保它确实返回“工作”...
var_dump(get_post_type($post_ID);
另外,除非我们知道你在哪里使用这个功能。例如,循环中,循环外?我们真的无法提供太多帮助,但实际上我帮不了多多。