问题描述

我需要在后期编辑仪表板 metabox 与发布作者 e-mail(或其他用户元字段) 。所以当管理员评论这篇文章时,可以进行编辑。

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

最佳解决方案

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

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

有关这个问题的更多细节:看看 this StackOverflow answer

次佳解决方案

您可以使用以下内容:

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

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。