dapatkan id pembuat pos di luar lingkaran

17

Saya perlu menempatkan metabox dashboard post edit dengan email penulis post (atau bidang meta pengguna lain). Sehingga dapat diedit ketika admin meninjau posting ini.

$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
        )
    )
);

Kode ini berfungsi ketika $ user_id adalah bilangan bulat (ketika saya secara manual meletakkannya sebagai contoh 4) tetapi saya ingin secara dinamis mendapatkan id penulis saat ini ( $user_id).

get_the_author_meta('user_mail')harus bekerja tanpa menentukan $user_id(codex mengatakan bahwa :)) tetapi kode ada di dalam functions.phpdan di luar loop sehingga tidak berfungsi. Saya mulai dengan Wordpress dan PHP jadi saya tidak tahu apa yang harus saya lakukan selanjutnya.

Coba juga ini:

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

Jawaban:

9

Anda dapat menggunakan yang berikut ini:

/**
 * 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;
}
Stephen Harris
sumber
Hmm itu tidak berfungsi untuk saya - saya pikir fungsi harus terhubung ke salah satu filter tetapi tidak tahu yang mana.
th3rion
Bekerja untuk saya ... apakah Anda yakin Anda memberikan ID kiriman (valid)?
Stephen Harris
Tetapi saya ingin menampilkan bidang meta ini di layar edit untuk setiap posting (tidak hanya untuk satu) dan penulis posting dapat berbeda sehingga $ post_id harus dimuat secara dinamis sesuai dengan layar edit.
th3rion
Atur $post_idsecara dinamis. Jika menggunakan di dalam metabox, panggilan balik metabox Anda akan melewati $postobjek. Jadi Anda bisa menggunakan $post->ID(Anda mungkin bisa menggunakan $post->post_authormeta itu saja.
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;
}

Dengan fungsi ini saya dapat menampilkan email penulis pos di layar edit posting. Masih tidak tahu cara membuatnya bekerja dengan bidang meta khusus tapi saya pikir saya lebih dekat sekarang.

thririon
sumber
Itu juga pertanyaan Anda sendiri. Anda dapat mengeditnya untuk menjelaskan.
funwhilelost