ID des Autors außerhalb der Schleife abrufen

16

Ich muss die Metabox für das Post-Edit-Dashboard mit der E-Mail des Autors (oder anderen Benutzer-Metafeldern) einfügen. Es kann also bearbeitet werden, wenn der Administrator diesen Beitrag überprüft.

$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
        )
    )
);

Dieser Code funktioniert, wenn $ user_id eine Ganzzahl ist (wenn ich dort zum Beispiel 4 manuell eingebe), ich aber die aktuelle Autoren-ID ( $user_id) dynamisch abrufen möchte .

get_the_author_meta('user_mail')sollte ohne Angabe funktionieren $user_id(Codex sagt das :)), aber Code befindet sich innerhalb functions.phpund außerhalb der Schleife, sodass er nicht funktioniert. Ich fange mit Wordpress und PHP an und weiß nicht, was ich als nächstes tun soll.

Auch dies versucht:

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

Antworten:

8

Sie können Folgendes verwenden:

/**
 * 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;
}
Stephen Harris
quelle
Hmm, es funktioniert nicht für mich - ich denke, die Funktion muss an einen der Filter angeschlossen sein, weiß aber nicht, welche.
th3rion
Funktioniert für mich ... Sind Sie sicher, dass Sie eine (gültige) Beitrags-ID übergeben?
Stephen Harris
Aber ich möchte dieses Metafeld im Bearbeitungsbildschirm für jeden Beitrag anzeigen (nicht nur für einen) und der Autor des Beitrags kann unterschiedlich sein, so dass $ post_id dynamisch entsprechend dem Bearbeitungsbildschirm geladen werden muss.
th3rion
Stellen Sie sich $post_iddynamisch. Bei Verwendung in einer Metabox wird Ihr Metabox-Rückruf an das $postObjekt übergeben. Sie können also $post->ID(Sie können wahrscheinlich nur $post->post_authorfür diese Meta verwenden.
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;
}

Mit dieser Funktion konnte ich die E-Mail des Autors im Post-Edit-Bildschirm anzeigen. Ich weiß immer noch nicht, wie ich es mit benutzerdefinierten Metafeldern zum Laufen bringen soll, aber ich denke, ich bin jetzt näher dran.

th3rion
quelle
Es ist auch deine eigene Frage. Sie können es zur Verdeutlichung bearbeiten.
funwhilelost