我需要将带有作者作者电子邮件(或其他用户元字段)的后编辑仪表板metabox放入。因此,当管理员查看此帖子时,可以对其进行编辑。动态获取当前作者ID($user_id)。

get_the_author_meta('user_mail')应该在不指定$user_id的情况下工作(codex表示:)),但是代码在functions.php中且在循环外部,因此它不起作用。我从Wordpress和PHP开始,所以我不知道下一步该怎么做。

也尝试过:

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


#1 楼

最简单的方法是使用get_post_field()

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


有关此问题的更多详细信息,请查看此StackOverflow答案。

#2 楼

您可以使用以下命令:

/**
 * 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
13-10-24在6:22

对我有用...确定要传递一个(有效)帖子ID吗?

–斯蒂芬·哈里斯(Stephen Harris)
13-10-24在13:04

但是我想在每个帖子的编辑屏幕中显示此meta字段(而不仅仅是一个帖子),并且帖子作者可以不同,因此必须根据编辑屏幕动态加载$ post_id。

–th3rion
13-10-24在13:17

动态设置$ post_id。如果在metabox内部使用,您的metabox回调将传递给$ post对象。因此,您可以使用$ post-> ID(您可以仅将$ post-> post_author用于该元数据。

–斯蒂芬·哈里斯(Stephen Harris)
13-10-24在16:12

#3 楼

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
14年6月17日在1:08