在循环外获取帖子作者ID


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;

Answers:



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

对我有用...确定要传递它的(有效)帖子ID吗?
史蒂芬·哈里斯

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

$post_id动态设置。如果在metabox内部使用,则metabox回调将传递给该$post对象。所以,你可以使用$post->ID(你或许可以只使用$post->post_author该元。
斯蒂芬·哈里斯

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.