web-dev-qa-db-ja.com

get_user_metaショートプロファイルセクション

わかりましたので、私は彼らが欲しい画像の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' );

ユーザーフィールドに頼るのではなく、単にディレクトリに画像をアップロードし、そこにファイル名としてuseridを使用し、それからそれをロードし、それ以外の場合は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' );
1
xLRDxREVENGEx

わかりましたので、私はそれが欲しいように働いていました。今私がしなければならないのは私がユーザーにそこに自身の画像をアップロードさせることができるようにしたいかどうかを考え出すことです。

<?
$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
xLRDxREVENGEx

コアから:

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

最初の引数としてユーザーIDを、2番目のキーとして'author_pic'を、3番目のキーとしてTRUEを渡します(文字列値を返すため)。

1
fuxia

質問の編集部分のコード、そして最初の部分も動作するはずですが、 get_user_meta() 関数にユーザーIDを追加する必要があります。最初のコードですが、最初の行を次のように変更してください。

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

$ user_idがユーザーの実際のIDを保持していることを確認してください。

1
Bainternet