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.