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;

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

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.


To także twoje własne pytanie. Możesz go edytować, aby wyjaśnić.
— funwhilelost
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.