web-dev-qa-db-ja.com

get_avatarを使用するときにhtmlのimgタグの置き替えにアバターのURLを取得しますか?

私はdivの背景URLのスタイルとしてそれを使用するためにユーザーのアバターURLを取得したいです。私は次のようにしようとしましたが、私はそれがそのように見えるコードを見たときに何も返しません。

background: url()

私はこの機能を使いました。

function get_avatar_url($get_avatar){
preg_match("/src='(.*?)'/i", $get_avatar, $matches);
return $matches[1];
}

任意の助けてください?

2
clarck

Gravatar URLを自分で構築するのは非常に簡単です。これは、単にユーザーの電子メールアドレスのMD5ハッシュです。

<?php $gravatar = 'http://www.gravatar.com/avatar/' . md5(strtolower($email)) . '&s=32'; ?>

<div class="avatar" style="background: url(<?php echo $gravatar ?>);" ></div>

最後のsパラメータは、画像のサイズをピクセル単位で定義します。

Gravatarsを使う - WordPress Codex

1
Jono Warren

WordPressバージョン4.2.0以降、 get_avatar_url() を使用できます。この関数はwp-includes/link-template.phpにあります。

function get_avatar_url( $id_or_email, $args = null ) {
    $args = get_avatar_data( $id_or_email, $args );
    return $args['url'];
}

だからあなたは単にそれを使用することができます:

$avatar_url = get_avatar_url($user_id);

また、私はこれが古い質問であることを知っています、しかし学ぶべきすばらしい教訓。カスタム関数を追加するときは常にプレフィックスを使用してください。あなたのカスタム関数はget_avatar_url()であり、新しく追加されたコア関数get_avatar_url()もそうです。 4.2.0にアップグレードしたときにエラーが発生したはずです。

1
<?php
add_filter(
    'get_avatar',
    'get_avatar_url',
    10,
    5
);

function get_avatar_url( $avatar, $id_or_email, $size = 96, $default = '', $alt = '' ) {

    preg_match( '#src=["|\'](.+)["|\']#Uuis', $avatar, $matches );

    return ( isset( $matches[1] ) && ! empty( $matches[1]) ) ?
        (string) $matches[1] : '';  

}

get_avatarにフィルタを適用します、それは5つの引数を取ります(!)。最初のものは完全な<img>-タグです。また、ソースを二重引用符で囲むことができることを忘れないでください(["|'])。それがあなたの機能が失敗した点だと思います。

1
Ralf912