nhận id bài viết bên ngoài vòng lặp


17

Tôi cần đặt trong metabox chỉnh sửa bài đăng với e-mail của tác giả bài đăng (hoặc các trường meta người dùng khác). Vì vậy, nó có thể được chỉnh sửa khi quản trị viên đánh giá bài đăng này.

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

Mã này hoạt động khi $ user_id là một số nguyên (khi tôi đặt thủ công ở đó ví dụ 4) nhưng tôi muốn tự động lấy id tác giả hiện tại ( $user_id).

get_the_author_meta('user_mail')nên hoạt động mà không chỉ định $user_id(codex nói rằng :)) nhưng mã nằm trong functions.phpvà ngoài vòng lặp để nó không hoạt động. Tôi đang bắt đầu với Wordpress và PHP vì vậy tôi không biết phải làm gì tiếp theo.

Cũng đã thử điều này:

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

Câu trả lời:



9

Bạn có thể sử dụng như sau:

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

Hmm nó không hoạt động với tôi - tôi nghĩ chức năng phải được nối với một trong các bộ lọc nhưng không biết cái nào.
th3rion

Làm việc cho tôi ... bạn có chắc là bạn đã chuyển ID đăng ký (hợp lệ) không?
Stephen Harris

Nhưng tôi muốn hiển thị trường meta này trong màn hình chỉnh sửa cho mỗi bài đăng (không chỉ cho một) và tác giả bài đăng có thể khác nhau để $ post_id phải được tải động theo màn hình chỉnh sửa.
th3rion

Đặt $post_idđộng. Nếu sử dụng bên trong metabox, cuộc gọi lại metabox của bạn sẽ được truyền $postđối tượng. Vì vậy, bạn có thể sử dụng $post->ID(Bạn có thể chỉ cần sử dụng $post->post_authorcho meta đó.
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;
}

Với chức năng này, tôi có thể hiển thị e-mail của tác giả bài viết trong màn hình chỉnh sửa bài. Vẫn không biết làm thế nào để nó hoạt động với trường meta tùy chỉnh nhưng tôi nghĩ bây giờ tôi đang ở gần hơn.


Đó cũng là câu hỏi của riêng bạn. Bạn có thể chỉnh sửa nó để làm rõ.
funwhilelost
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.