我想知道是否有办法在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');
?>
但是,这将返回整个图像,包括属性(imgsrc、class、width、height、alt)。我只想返回URL,因为我已经在模板中为我的图像设置了所有属性。
试着做这样的事情:
<img src="[shortcode-for-avatar-url]" class="myclass" etc >
有人知道怎么做吗?
非常感谢
您可以使用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');
我写了一个PHP函数来获取最近安装的WordPress中的用户图像,如果WordPress小于2.5版本,我的函数使用了不同的方法来检索用户图像。可以在下面找到一个稍微修改过的版本,它只是简单地输出用户的缩放图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.'&d='.$gravatar_default.'&r='.$gravatar_rating.'';
echo $gravatar_uri; // URI of GRAVATAR