ループ外で投稿者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(codexによれば:))が、コードは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;
}

うーん、それは私には機能しません-私は機能がフィルターの1つにフックされなければならないと思いますが、どれを知らないのですか。
th3rion

私のために動作します...あなたはそれに(有効な)投稿IDを渡していますか?
スティーブンハリス

しかし、私はこのメタフィールドをすべての投稿(1つだけではなく)の編集画面に表示し、投稿の作成者が異なるため、編集画面に従って$ post_idを動的にロードする必要があります。
th3rion

$post_id動的に設定します。メタボックス内で使用する場合、メタボックスコールバックには$postオブジェクトが渡されます。あなたが使用できるように$post->ID(あなたはおそらく使用することができます$post->post_author。そのメタのために
スティーブン・ハリス

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;
}

この機能により、投稿編集画面で投稿者のメールを表示することができました。それでもカスタムメタフィールドでそれを動作させる方法がわかりませんが、私は今より近いと思います。


それはあなた自身の質問でもあります。編集して明確にすることができます。
funwhilelost 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.