0

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

何か案は?

ありがとう

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 に答える
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 に答える