Obține ID-ul autorului articolului în afara buclei
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;

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.

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;
}

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

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

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.

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.
