2012-11-01 5 views
0

WP에서 'work'라는 사용자 정의 게시물 유형이 있는데 사용자 정의 필드 'socialmedia'의 값이 'yes'일 때마다 관리자에게 전자 메일을 보내야합니다. 다음 코드는 메일을 정상적으로 전송하지만 이메일에 사용자 정의 필드 값을 포함하지 않습니다.Wordpress get_post_meta()가 functions.php에서 작동하지 않습니다.

function email_members($post_ID) { 
global $post; 
if ('work' == get_post_type($post_ID)){ 
    $social = get_post_meta($post_ID, 'socialmedia', true); 
    mail('[email protected]', get_the_title($post_ID), $social); 
} 
return $post_ID; 
} 

add_action('publish_work', 'email_members'); 

아이디어가 있습니까?

감사

+0

해당 게시물의 'socialmedia'키에 대한 메타 값이 있는지 확인 하시겠습니까? – doublesharp

답변

0

이미 기능을 통해 $ POST_ID를 통과하면, 세계의 요점은 무엇입니까? 이 기능을 사용하는 곳에 우리가 알지 못한다면 어떻게

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

...에 대한 것은 ... 또한, 확인은 참으로 "작업"을 반환

var_dump(get_post_type($post_ID); 

을 확인합니다. 예를 들어, 루프에서, 루프 밖으로? 우리는별로 도움이되지 못합니다. 나는별로 도움이되지 못합니다.

+1

안녕하십니까. 안녕하세요. 이 기능은 작업 게시가 게시 될 때 사용됩니다. 즉 게시가 게시 될 때 'socialmedia'가 '예'로 표시된 경우에만 이메일을 보내야합니다. – badcoder

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('[email protected]', 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

전자 메일을 보내기 전에 확인하십시오.

if('yes' == ($social = get_post_meta($post_ID, 'socialmedia', true))) 
{ 
    mail('[email protected]', get_the_title($post_ID), $social); 
} 
관련 문제