получить раздел Краткого профиля мета-данных пользователя


Хорошо, поэтому я добавил настраиваемое поле на страницу редактирования профиля пользователей, где они могут добавить ссылку на URL-адрес изображения, которое они хотят. В настоящее время я использую это для участников и выше, но у меня также есть небольшое окно профиля на моем сайте, которое получает аватар пользователя от gravatar. Я использовал код из прошлого, но изменил его, чтобы получить текущую авторизацию пользователей или получить граватар. Смотрите код ниже

$profilepic = get_user_meta('author_pic');
$imgtagbeg = ('<img style="height:52px; width:52px" src="');
$imgtagend = ('"/>');
    if ($profilepic)
        echo $imgtagbeg,$profilepic,$imgtagend; 
    else
        echo get_avatar( $user_email, '52', $default = 'http://www.gravatar.com/avatar.php?gravatar_id=$md5&size=80&default=$default' );

Что я хочу сделать, так это если текущий пользователь подписал у него есть аватар, связанный в поле его профиля, затем используйте его вместо граватара. Но если у автора есть граватар и он оставил поле пустым в профиле, используйте его или получите граватар по умолчанию

Обновление: Как насчет чего-то вроде этого

$userpic = '<img src="link/to/author_pics/$userid.png"';
    if ($userpic)
        echo $userpic;
    else
        echo get_avatar( $user_email, '52', $default = 'http://www.gravatar.com/avatar.php?gravatar_id=$md5&size=80&default=$default' );

Вместо того, чтобы полагаться на поле пользователя, просто загрузите изображение в каталог и используйте там идентификатор пользователя в качестве имени файла, а затем загрузите его, используя gravatar. Сработает ли это?

ОБНОВЛЕНИЕ 2:

$userpiccur = wp_get_current_user();
$userpicloc = 'http://avatars.mydomain.com/';
$userpictyp = '.png';
$userpicurl = $userpicloc . $userpiccur->user_login . $userpictyp;
$header_response = get_headers($userpicurl, 1);
$userpicbeg = '<img style="height:52px; width:52px" src="http://avatars.mydomain.com/';
$userpicend = '.png"/>';
if ( strpos( $header_response[0], "404" ) !== false )
    echo $userpicbeg,$userpiccur->user_login,$userpicend;
else
    echo get_avatar( $user_email, '52', $default = 'http://www.gravatar.com/avatar.php?gravatar_id=$md5&size=80&default=$default' );
Author: xLRDxREVENGEx, 2011-05-23

3 answers

Из ядра:

function get_user_meta($user_id, $key, $single = false) {
    return get_metadata('user', $user_id, $key, $single);
}

Передайте идентификатор пользователя в качестве первого аргумента, ключ 'author_pic' в качестве второго и TRUE в качестве третьего (чтобы вернуть строковое значение).

 1
Author: fuxia, 2011-05-23 23:19:14

Ваш код в части редактирования вопроса должен работать, а также ваша первая часть, но вам нужно добавить идентификатор пользователя в функцию get_user_meta(), поэтому используйте свой первый код, но измените первую строку следующим образом:

$profilepic = get_user_meta($user_id,'author_pic',true);

И убедитесь, что $user_id содержит фактический идентификатор пользователя.

 1
Author: Bainternet, 2011-05-24 00:15:05

Хорошо, поэтому я заставил его работать так, как я хочу. Теперь все, что мне нужно сделать, это выяснить, хочу ли я, чтобы пользователь мог загружать туда собственное изображение или нет.

<?
$userpiccur = wp_get_current_user();
$userpicloc = 'http://avatars.mydomain.com/';
$userpictyp = '.png';
$userpicurl = $userpicloc.$userpiccur->user_login.$userpictyp;
$userpicbeg = '<img class="avatar avatar-52 photo" style="height:52px; width:52px" src="';
$userpicend = '"/>';
if (@fopen($userpicurl, "r"))
    echo  $userpicbeg,$userpicurl,$userpicend;
else
    echo get_avatar( $user_email, '52', $default = 'http://www.gravatar.com/avatar.php?gravatar_id=$md5&size=80&default=$default' );
?>
 0
Author: xLRDxREVENGEx, 2011-05-24 03:33:16