루프 외부의 게시물 작성자 ID 얻기


17

게시물 작성자 이메일 (또는 다른 사용자 메타 필드)이있는 게시물 편집 대시 보드 메타 박스에 배치해야합니다. 따라서 관리자가이 게시물을 검토 할 때 편집 할 수 있습니다.

$meta_id = get_the_author_meta( 'user_email', $user_id );

$meta_box = array(
    'id' => 'my-meta-box',
    'title' => 'DANE FIRMY',
    'page' => 'post',
    'context' => 'normal',
    'priority' => 'high',
    'fields' => array(
        array(
            'name' => 'E-mail box',
            'id' => 'mail',
            'type' => 'text',
            'std' => $meta_id
        )
    )
);

이 코드는 $ user_id가 정수 일 때 (예를 들어 4를 수동으로 넣을 때) 작동하지만 현재 작성자 ID ( $user_id) 를 동적으로 가져 오려고 합니다.

get_the_author_meta('user_mail')지정하지 않고 작동해야 $user_id하지만 (코덱스 : :)) 코드는 functions.php루프 안팎에 있으므로 작동하지 않습니다. Wordpress와 PHP로 시작해서 다음에 무엇을해야할지 모르겠습니다.

또한 이것을 시도하십시오 :

global $post;
$user_id=$post->post_author;

답변:



9

다음을 사용할 수 있습니다.

/**
 * Gets the author of the specified post. Can also be used inside the loop
 * to get the ID of the author of the current post, by not passing a post ID.
 * Outside the loop you must pass a post ID.
 *
 * @param int $post_id ID of post
 * @return int ID of post author
*/
function wpse119881_get_author( $post_id = 0 ){
     $post = get_post( $post_id );
     return $post->post_author;
}

흠 그것은 나를 위해 작동하지 않습니다-나는 기능이 필터 중 하나에 연결되어 있어야하지만 어느 것을 모를 것이라고 생각합니다.
th3rion

저에게 효과적입니다 ... (유효한) 포스트 ID를 전달하고 있습니까?
Stephen Harris

그러나이 메타 필드를 모든 게시물 (하나가 아닌)의 편집 화면에 표시하고 싶지만 게시물 작성자가 다를 수 있으므로 $ post_id를 편집 화면에 따라 동적으로로드해야합니다.
th3rion

$post_id동적으로 설정하십시오 . 메타 박스 내부에서 사용하는 경우 메타 박스 콜백에 $post객체 가 전달됩니다 . 그래서 당신은 사용할 $post->ID수 있습니다 (아마도 당신은 $post->post_author그 메타를 사용할 수 있습니다 .
Stephen Harris

1
add_action( 'edit_form_after_title', 'myprefix_edit_form_after_title' );
function myprefix_edit_form_after_title() {
    global $post;
    $author_id=$post->post_author;
    $authord = get_the_author_meta( 'user_email', $author_id);
    echo $authord;
}

이 기능을 사용하여 게시물 편집 화면에 게시물 작성자 전자 메일을 표시 할 수있었습니다. 여전히 커스텀 메타 필드로 작동시키는 방법을 모르지만 지금은 더 가깝다고 생각합니다.


그것은 또한 당신 자신의 질문입니다. 명확히하기 위해 편집 할 수 있습니다.
1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.