루프 외부의 게시물 작성자 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.