web-dev-qa-db-ja.com

ループ外の投稿者IDを取得

投稿編集者の電子メール(または他のユーザーメタフィールド)と共に投稿編集ダッシュボードメタボックスに配置する必要があります。そのため、管理者がこの投稿を確認したときに編集できます。

$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を指定しなくても動作するはずです(codexによると:))が、コードはfunctions.php内にあり、ループの外側にあるため動作しません。私はWordpressとPHPから始めているので、次に何をすべきかわかりません。

またこれを試してみました:

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

最も簡単な方法は get_post_field() を使うことです。

$post_author_id = get_post_field( 'post_author', $post_id );

この問題の詳細については、 このStackOverflowの答え をご覧ください。

24
Mayeenul Islam

次のものを使用できます。

/**
 * 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;
}
7
Stephen Harris