0

我在 WP 中有一个名为“工作”的自定义帖子类型,每次自定义字段“社交媒体”的值为“是”时,都需要向管理员发送一封电子邮件。以下代码可以正常发送邮件,但不包括电子邮件中的自定义字段值:

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');

有任何想法吗?

谢谢

4

3 回答 3

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');
于 2012-11-01T16:21:16.963 回答
1

在发送电子邮件之前检查元值。

if( 'yes' == ($social = get_post_meta($post_ID, 'socialmedia', true)) )
{
  mail('me@example.com', get_the_title($post_ID), $social);
}
于 2012-11-01T16:29:09.543 回答
0

如果您已经通过函数传递了 $post_ID,那么全局的意义何在?怎么样 ...

if(get_post_type($post_ID) === "work"){ 
    // do stuff 
}

确保它确实返回“工作”...

var_dump(get_post_type($post_ID);

此外,除非我们知道您在哪里使用该功能。例如在循环中,在循环外?我们真的帮不了多少,也帮不了多少,我真的帮不了多少。

于 2012-11-01T14:41:05.633 回答