如何从页眉操作访问作者数据

时间:2016-07-09 作者:chipairon

我正在向标题添加一个函数:

add_action(\'wp_head\', \'mine\');
function mine() {
  global $authordata;
  $avatar_url = get_avatar_ur($authordata->user_email);
  // ....
}
但我得到了一个错误:trying to get property of non-object.我想这是因为我在头球,而不是在门柱内。

如何从标题访问authordata数据,并且只能在文章页面中访问?

2 个回复
SO网友:dan9vu

全球$authordata 默认情况下,变量仅在以下情况下可用$wp_query->is_author() && isset($wp_query->post) condition 表示满意。

这意味着你无法访问$authordata 在单个贴子页面内。

您可以尝试通过以下方式获取作者数据:$wp_query:

add_action(\'wp_head\', function()
{
    global $wp_query;

    $userdata   = get_userdata($wp_query->post->post_author);
    $avatar_url = get_avatar_ur($userdata->user_email);
    ...
}, 10, 0);

SO网友:Ismail

既然这个糊状物对你很有效,让我把它变成一个答案。

您总是可以通过某些方法获得给定帖子的作者,让我们使用get_post_field( \'post_author\', $post_id ) 为了这个。

要获取给定用户的数据,需要get_userdata() 要使用的函数。我们将把author ID作为第一个参数传递给此函数,以获取循环外部的author数据以及设置post数据的位置:

add_action(\'wp_head\', \'mine\');
function mine() {
  if ( !is_single() )
    return; // this is not a single post

  if ( empty( ( $author = (int) get_post_field( \'post_author\', get_the_ID() ) ) ) )
    return; // no author was caught

  $authordata = get_userdata( $author );

  $avatar_url = get_avatar_url($authordata->user_email);
  // ....
}
只要单桩类型为post. 要扩展到页面,请调用is_page(), 或自定义帖子类型is_singular()

相关推荐

EDIT-Comments.php COMMENT_ROW_ACTIONS AJAX问题

在编辑注释上。php页面,我正在连接到comment\\u row\\u actions过滤器,以便在末尾添加另一个链接。我正在复制“Approve”链接,添加另一个查询键和值,并修改锚文本。我想根据新查询键的值添加一些注释元。批准的链接:/wp-admin/comment.php?c=9999&action=approvecomment&_wpnonce=8526c66已批准的元链接/wp-admin/comment.php?c=9999&action=approvecommen