รับรหัสผู้โพสต์นอกวง


17

ฉันต้องวางลงในแผงควบคุมการโพสต์แก้ไข metabox ด้วยอีเมลผู้เขียนโพสต์ (หรือเขตข้อมูลเมตาผู้ใช้อื่น ๆ ) ดังนั้นจึงสามารถแก้ไขได้เมื่อผู้ดูแลระบบวิจารณ์โพสต์นี้

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

รหัสนี้ใช้งานได้เมื่อ $ user_id เป็นจำนวนเต็ม (เมื่อฉันใส่ไว้ที่นั่นด้วยตนเองเช่น 4) แต่ฉันต้องการรับ id ผู้เขียนปัจจุบันแบบไดนามิก ( $user_id)

get_the_author_meta('user_mail')ควรทำงานโดยไม่ระบุ$user_id(codex บอกว่า :)) แต่โค้ดอยู่ในfunctions.phpและนอกลูปดังนั้นจึงไม่ทำงาน ฉันเริ่มต้นด้วย Wordpress และ PHP ดังนั้นฉันไม่รู้จะทำอะไรต่อไป

ลองนี้:

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

คำตอบ:



9

คุณสามารถใช้สิ่งต่อไปนี้:

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

อืมมันใช้งานไม่ได้สำหรับฉัน - ฉันคิดว่าฟังก์ชั่นจะต้องติดอยู่กับตัวกรองตัวใดตัวหนึ่ง แต่ไม่รู้ว่าตัวไหน
th3rion

ใช้งานได้สำหรับฉัน ... คุณแน่ใจหรือว่าคุณกำลังส่งรหัสโพสต์ (ถูกต้อง)
Stephen Harris

แต่ฉันต้องการแสดงเมตาฟิลด์นี้ในหน้าจอแก้ไขสำหรับทุกโพสต์ (ไม่ใช่แค่สำหรับหนึ่ง) และผู้เขียนโพสต์อาจแตกต่างกันดังนั้น $ post_id จะต้องโหลดแบบไดนามิกตามหน้าจอแก้ไข
th3rion

ตั้งค่า$post_idแบบไดนามิก หากใช้ภายใน metabox การเรียกกลับของ metabox ของคุณจะถูกส่งผ่าน$postวัตถุ ดังนั้นคุณสามารถใช้$post->ID(คุณอาจใช้$post->post_authorเมตานั้นได้
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;
}

ด้วยฟังก์ชั่นนี้ฉันสามารถแสดงอีเมลผู้โพสต์ในหน้าจอแก้ไขโพสต์ ยังไม่รู้ว่าจะทำให้มันทำงานกับเขตข้อมูลเมตาแบบกำหนดเองได้อย่างไร แต่ฉันคิดว่าฉันใกล้เข้ามาแล้ว


มันเป็นคำถามของคุณเองด้วย คุณสามารถแก้ไขได้เพื่อชี้แจง
funwhilelost
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.