ottenere l'id autore post al di fuori del ciclo


17

Devo inserire metabox nella dashboard di post modifica con e-mail autore post (o altri meta campi utente). Quindi può essere modificato quando l'amministratore esamina questo 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
        )
    )
);

Questo codice funziona quando $ user_id è un numero intero (quando lo inserisco manualmente per esempio 4) ma voglio ottenere dinamicamente l'attuale ID autore ( $user_id).

get_the_author_meta('user_mail')dovrebbe funzionare senza specificare $user_id(il codice dice che :)) ma il codice è dentro functions.phpe fuori dal ciclo, quindi non funziona. Sto iniziando con Wordpress e PHP, quindi non so cosa fare dopo.

Ho provato anche questo:

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

Risposte:



9

È possibile utilizzare quanto segue:

/**
 * 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 non funziona per me - penso che la funzione debba essere agganciata a uno dei filtri ma non so quale.
giovedì

Funziona per me ... sei sicuro di aver passato un ID post (valido)?
Stephen Harris,

Ma voglio visualizzare questo meta campo nella schermata di modifica per ogni post (non solo per uno) e l'autore del post può essere diverso, quindi $ post_id deve essere caricato dinamicamente in base alla schermata di modifica.
giovedì

Impostato $post_iddinamicamente. Se si utilizza all'interno di un metabox, il callback di metabox verrà passato $postall'oggetto. Quindi puoi usare $post->ID(Probabilmente puoi semplicemente usare $post->post_authorper quella 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;
}

Con questa funzione sono stato in grado di visualizzare l'e-mail dell'autore del post nella schermata di modifica post. Non so ancora come farlo funzionare con un metacampo personalizzato, ma penso che ora sono più vicino.


È anche una tua domanda. Puoi modificarlo per chiarire.
funwhilelost
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.