アバターをお持ちでない場合はサイズ指定がNULLになっていませんか?
最低サイズを決めてデフォルト値を代入するようにしてみてはいかがでしょうか。
msioさん、ご返答ありがとうございます。
1行目の
$size = null
を
$size = 100
にするということでしょうか?
やってみたのですが、アバターのURLが何も出力されませんでした。
ちなみに、下記のコードで出力しています。
echo get_avatar_onlyurl( $post->post_author , 100 );
オリジナルのアバター(管理画面からアップロードした画像)がある場合は
preg_match('/src="(.*?)"/', $image, $match)
でマッチしますが、ない場合(ミステリーマンなど Gravatar サービスが提供する画像)はクォート文字が異なるのでマッチしません。
参考ページ: http://weble.org/2012/04/20/wordpress-get-avatar-url
2通りのパターンに対応させるため、例えば以下のコードになると思います。
function get_avatar_onlyurl( $id_or_email, $size = null, $default = null, $alt = null )
{
$image = get_avatar( $id_or_email, $size );
if ( preg_match( '/src="(.*?)"/', $image, $match ) && isset( $match[1] ) ) {
return $match[1];
}
if ( preg_match( "/src='(.*?)'/", $image, $match ) && isset( $match[1] ) ) {
return $match[1];
}
return false;
}
-
この返信は7年、 1ヶ月前にgblsmが編集しました。
すみませんでした。確認いたしました。
数値はべつにNullで大丈夫のようです。
アバター取得からURLの抽出につかっている正規表現が問題みたいです。
取得したmatchをvar_dumpで内容を確認してみてください。
srcの指定がシングルクォーツで囲まれているので検索に合致しないためURLが取得できないようです。
かこみのクォーツは指定がばらけていることがあるのでどちらでも取得するようにするととれると思います。
ただJavascriptと混合でつかっていて難解な場合はへんな動きをするかもしれません。
preg_match('/src=[\"|\'](.*?)[\"|\']/', $image, $match)
正規表現なのでクォーツは円マークでエスケープしてあげてください。
@gblsm さんが先に回答をしめされていました。
失礼いたしました。
-
この返信は7年、 1ヶ月前にmsioが編集しました。
gblsmさん、msioさん、ありがとうございます!
お二方のコードどちらでも表示出来ました。
クォート文字の違いで抽出されなかったんですね。
理由が分かってスッキリしました。
ありがとうございました!