Ottenere l'ID dell'autore del post fuori dal loop

24 ott 2013, 00:52:37
Visualizzazioni: 66.5K
Voti: 21

Ho bisogno di inserire nella dashboard di modifica del post una metabox con l'email dell'autore (o altri campi meta dell'utente). In modo che possa essere modificata quando l'amministratore rivede questo post.

$meta_id = get_the_author_meta( 'user_email', $user_id );

$meta_box = array(
    'id' => 'my-meta-box',
    'title' => 'DATI AZIENDA',
    'page' => 'post',
    'context' => 'normal',
    'priority' => 'high',
    'fields' => array(
        array(
            'name' => 'Casella e-mail',
            'id' => 'mail',
            'type' => 'text',
            'std' => $meta_id
        )
    )
);

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

get_the_author_meta('user_mail') dovrebbe funzionare senza specificare $user_id (il codex lo dice :)) ma il codice è in functions.php e fuori dal loop quindi non funziona. Sto iniziando con WordPress e PHP quindi non so come procedere.

Ho provato anche questo:

global $post;
$user_id=$post->post_author;
0
Tutte le risposte alla domanda 3
0
40

Il modo più semplice sarebbe utilizzare get_post_field():

$post_author_id = get_post_field( 'post_author', $post_id );

Per maggiori dettagli su questo argomento: dai un'occhiata a questa risposta su StackOverflow.

12 giu 2015 14:35:50
4

Puoi utilizzare quanto segue:

/**
 * Ottiene l'autore del post specificato. Può anche essere utilizzato all'interno del loop
 * per ottenere l'ID dell'autore del post corrente, senza passare un ID post.
 * Al di fuori del loop è necessario passare un ID post.
 *
 * @param int $post_id ID del post
 * @return int ID dell'autore del post
*/
function wpse119881_get_author( $post_id = 0 ){
     $post = get_post( $post_id );
     return $post->post_author;
}
24 ott 2013 01:21:09
Commenti

Mmh, non funziona per me - penso che la funzione debba essere agganciata a uno dei filtri ma non so quale.

th3rion th3rion
24 ott 2013 09:22:56

Per me funziona... sei sicuro di star passando un ID post (valido)?

Stephen Harris Stephen Harris
24 ott 2013 16:04:43

Ma io voglio mostrare questo campo meta 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.

th3rion th3rion
24 ott 2013 16:17:43

Imposta $post_id dinamicamente. Se stai utilizzando il codice all'interno di una metabox, la tua funzione di callback della metabox riceverà l'oggetto $post. Quindi puoi utilizzare $post->ID (probabilmente puoi usare direttamente $post->post_author per quel meta.

Stephen Harris Stephen Harris
24 ott 2013 19:12:15
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 riuscito a visualizzare l'email dell'autore del post nella schermata di modifica del post. Non so ancora come farla funzionare con un campo meta personalizzato, ma penso di essere più vicino alla soluzione ora.

24 ott 2013 09:03:03
Commenti

È anche la tua domanda. Puoi modificarla per chiarire.

Andy Jacobs Andy Jacobs
17 giu 2014 04:08:52