pobierz identyfikator autora postu poza pętlą

17

Muszę umieścić w edytorze postu metaboks deski rozdzielczej z e-mailem autora posta (lub innymi polami meta użytkownika). Można go więc edytować, gdy administrator recenzuje ten post.

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

Ten kod działa, gdy $ user_id jest liczbą całkowitą (kiedy ręcznie tam umieszczam, na przykład 4), ale chcę dynamicznie uzyskać bieżący identyfikator autora ( $user_id).

get_the_author_meta('user_mail')powinien działać bez określania $user_id(mówi to kodeks :)), ale kod jest w functions.phppętli i poza nią, więc nie działa. Zaczynam od Wordpress i PHP, więc nie wiem, co robić dalej.

Próbowałem także:

global $post;
$user_id=$post->post_author;
th3rion
źródło

Odpowiedzi:

9

Możesz użyć następujących opcji:

/**
 * 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
źródło
Hmm, to nie działa dla mnie - myślę, że funkcja musi być podłączona do jednego z filtrów, ale nie wiem który.
th3rion
Działa dla mnie ... czy na pewno przekazujesz (ważny) identyfikator posta?
Stephen Harris
Ale chcę wyświetlić to pole meta na ekranie edycji dla każdego postu (nie tylko dla jednego), a autor postu może być inny, więc $ post_id musi być ładowany dynamicznie zgodnie z ekranem edycji.
th3rion
Ustaw $post_iddynamicznie. Jeśli używasz wewnątrz metaboksu, wywołanie zwrotne metaboksu zostanie przekazane do $postobiektu. Więc możesz użyć $post->ID(Prawdopodobnie możesz po prostu użyć $post->post_authortej meta.
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;
}

Dzięki tej funkcji mogłem wyświetlić e-mail autora posta na ekranie edycji postu. Nadal nie wiem, jak to zrobić z niestandardowym polem meta, ale myślę, że jestem teraz bliżej.

th3rion
źródło
To także twoje własne pytanie. Możesz go edytować, aby wyjaśnić.
funwhilelost