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.