Wordpress codex:php用于当前用户头像的URL

djmepvbi  于 11个月前  发布在  WordPress
关注(0)|答案(3)|浏览(124)

我想知道是否有一种方法可以在wordpress中获取当前登录用户头像的URI/URL?我发现这是一种使用get_avatar生成短代码插入当前用户头像的方法(在php下面放置在theme 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 >


有人知道怎么做吗?
非常感谢提前

ruyhziif

ruyhziif1#

您可以使用preg_match来查找URL:

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

字符串

myss37ts

myss37ts2#

我写了一个PHP函数,在最近的WordPress安装中获取用户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

字符串

aamkag61

aamkag613#

我知道这是一个老问题,但对于任何人看,有一个更简洁的方法来获得头像的网址与get_avatar_url()。(More info here.

global $current_user; wp_get_current_user();
$avatar_url = get_avatar_url( $current_user->ID );

字符串

相关问题