【问题标题】:Wordpress codex: php for URL of current user avatarWordpress codex:当前用户头像的 URL 的 php
【发布时间】:2014-02-14 03:18:12
【问题描述】:

我想知道是否有办法在 wordpress 中获取当前登录用户头像的 URI/URL?我发现这是一种生成简码以使用 get_avatar 插入当前用户头像的方法(在 php 下方放置在主题 functions.php 中):

<?php

function logged_in_user_avatar_shortcode() {
if ( is_user_logged_in() ) {
global $current_user;
get_currentuserinfo();
return get_avatar( $current_user->ID );
}
}
add_shortcode('logged-in-user-avatar', 'logged_in_user_avatar_shortcode');

?>

但是,这会返回整个图像,包括属性(img src、class、width、height、alt)。我想只返回 URL,因为我已经在模板中为我的图像设置了所有属性。

尝试做这样的事情:

<img src="[shortcode-for-avatar-url]" class="myclass" etc >

有人知道怎么做吗?

在此先感谢

【问题讨论】:

  • 很丑,但是有答案here
  • 据我所知,WP 没有仅返回 URL 的选项。或者至少,法典似乎没有提到它。所以上面的链接可能是你最好的选择。
  • 哦,该死的。我尝试在链接上使用第一个解决方案,它几乎可以工作,但总是为每个用户显示相同的模板头像。

标签: php wordpress shortcode avatar codex


【解决方案1】:

您可以使用preg_match 查找网址:

function logged_in_user_avatar_shortcode()
{
    if ( is_user_logged_in() )
    {
        global $current_user;
        $avatar = get_avatar( $current_user->ID );
        preg_match("/src=(['\"])(.*?)\1/", $avatar, $match);
        return $match[2];
    }
}
add_shortcode('logged-in-user-avatar', 'logged_in_user_avatar_shortcode');

【讨论】:

  • 您好,感谢您的想法。可悲的是没有工作。 在页面中产生:。有任何想法吗? (PS我没有忘记把新代码放到functions.php中)
  • @user1527123 将return $match[2]; 更改为echo $match[2];
  • 不,这也没有解决它。得到相同的,只是没有返回。 :-(
【解决方案2】:

我在最近的 WordPress 安装中编写了一个 PHP 函数来获取用户 gravatar,如果 WordPress 版本低于 2.5,我的函数使用了不同的方式来检索用户 gravatar。可以在下面找到仅输出用户 gravatar URI 的稍微修改的版本。

// Fallback for WP < 2.5
global $post;

$gravatar_post_id = get_queried_object_id();
$gravatar_author_id = get_post_field('post_author', $gravatar_post_id) || $post->post_author;//get_the_author_meta('ID');
$gravatar_email = get_the_author_meta('user_email', $gravatar_author_id);

$gravatar_hash = md5(strtolower(trim($gravatar_email)));
$gravatar_size = 68;
$gravatar_default = urlencode('mm');
$gravatar_rating = 'PG';
$gravatar_uri = 'http://www.gravatar.com/avatar/'.$gravatar_hash.'.jpg?s='.$gravatar_size.'&amp;d='.$gravatar_default.'&amp;r='.$gravatar_rating.'';

echo $gravatar_uri; // URI of GRAVATAR

【讨论】:

  • 谢谢,但我使用的是最新版本的 wordpress,我正在寻找本地头像(由用户或默认模板上传),而不是 gravatar。还是谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-26
相关资源
最近更新 更多