Wordpress get_post_meta()在functions.php中不起作用

时间:2012-11-01 14:38:37

标签: php wordpress

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

有什么想法吗?

由于

3 个答案:

答案 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);

另外,除非我们知道你在哪里使用这个功能。例如,循环中,循环外?我们真的无法提供太多帮助,但实际上我帮不了多多。