Obține ID-ul autorului articolului în afara buclei

24 oct. 2013, 00:52:37
Vizualizări: 66.5K
Voturi: 21

Am nevoie să plasez în tabloul de bord de editare a articolului o metabox cu e-mailul autorului (sau alte câmpuri meta ale utilizatorului). Astfel încât să poată fi editat când administratorul revizuiește acest articol.

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

$meta_box = array(
    'id' => 'my-meta-box',
    'title' => 'DATE FIRMĂ',
    'page' => 'post',
    'context' => 'normal',
    'priority' => 'high',
    'fields' => array(
        array(
            'name' => 'Căsuță e-mail',
            'id' => 'mail',
            'type' => 'text',
            'std' => $meta_id
        )
    )
);

Acest cod funcționează când $user_id este un număr întreg (când pun manual acolo de exemplu 4) dar vreau să obțin dinamic ID-ul autorului curent ($user_id).

get_the_author_meta('user_mail') ar trebui să funcționeze fără a specifica $user_id (așa spune codexul :)) dar codul este în functions.php și în afara buclei, așa că nu funcționează. Sunt la început cu WordPress și PHP așa că nu știu ce să fac în continuare.

Am încercat și asta:

global $post;
$user_id=$post->post_author;
0
Toate răspunsurile la întrebare 3
0
40

Cea mai ușoară metodă ar fi utilizarea funcției get_post_field():

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

Pentru mai multe detalii despre această problemă: consultați acest răspuns de pe StackOverflow.

12 iun. 2015 14:35:50
4

Puteți folosi următoarele:

/**
 * Obține autorul postării specificate. Poate fi folosit și în interiorul buclei
 * pentru a obține ID-ul autorului postării curente, fără a specifica un ID de postare.
 * În afara buclei, trebuie să specificați un ID de postare.
 *
 * @param int $post_id ID-ul postării
 * @return int ID-ul autorului postării
 */
function wpse119881_get_author( $post_id = 0 ){
     $post = get_post( $post_id );
     return $post->post_author;
}
24 oct. 2013 01:21:09
Comentarii

Hmm, nu funcționează pentru mine - cred că funcția trebuie conectată la unul dintre filtre, dar nu știu la care.

th3rion th3rion
24 oct. 2013 09:22:56

Funcționează pentru mine... ești sigur că transmiți un ID de postare (valid)?

Stephen Harris Stephen Harris
24 oct. 2013 16:04:43

Dar vreau să afișez acest câmp meta în ecranul de editare pentru fiecare postare (nu doar pentru una) și autorul postării poate fi diferit, așa că $post_id trebuie încărcat dinamic în funcție de ecranul de editare.

th3rion th3rion
24 oct. 2013 16:17:43

Setează $post_id dinamic. Dacă folosești în interiorul unei metabox, funcția ta de callback pentru metabox va primi obiectul $post. Deci poți folosi $post->ID (Probabil poți folosi direct $post->post_author pentru acea meta.

Stephen Harris Stephen Harris
24 oct. 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;
}

Cu această funcție am reușit să afișez adresa de e-mail a autorului postării în ecranul de editare al postării. Încă nu știu cum să o fac să funcționeze cu un câmp meta personalizat, dar cred că sunt mai aproape acum.

24 oct. 2013 09:03:03
Comentarii

De asemenea, este propria ta întrebare. O poți edita pentru a o clarifica.

Andy Jacobs Andy Jacobs
17 iun. 2014 04:08:52