このスニペットをfunctions.phpに入れてみました
add_filter( 'avatar_defaults', 'newgravatar' );
function newgravatar ($avatar_defaults) {
$myavatar = get_bloginfo('template_directory') . '/images/default_avatar.png';
$avatar_defaults[$myavatar] = "Locale";
return $avatar_defaults;
}
Options-Discussionに新しいアバターが現れます。問題は、それがローカルではないことです。アバターはhttp://i1.wp.com/mydomain.com/wp-content/themes/mytheme/images/default_avatar.png
から取得されます。
それで、それはとにかくi1.wp.com
を通り抜けます..どうして私はただ最初からローカルなリンクを持つことができますか?
私は自分自身でこれを行う方法を探していました、そして上で示された同じ機能が動いていないと示唆し続けています、おそらくWPのコードベースへの最近の更新のため、私は全くわからない。これは少し厄介で、コアファイルを編集することを含みます(良くありません)が、これは回避策です。手順は次のとおりです。
最初のIMGタグが出力される場所の真上までスクロールすると、次のようになります。
$out = str_replace( '&', '&', esc_url( $out ) );
$avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
$out
の直下に、$out = $default;
を追加します。これは基本的にデフォルトの画像ソースURL(オプションテーブルに格納されている)を渡します。
それで、それはこのように見えるべきです:
$out = str_replace( '&', '&', esc_url( $out ) );
$out = $default;
$avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
} else {
$avatar = "<img alt='{$safe_alt}' src='{$default}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />";
}
return apply_filters('get_avatar', $avatar, $id_or_email, $size, $default, $alt);
繰り返しになりますが、これは理想的ではありません。次回WordPressをアップデートしたときに、この変更が失われるためです。しかし今のところそれはうまくいきます。
コアファイルを変更しないことを考えている将来の訪問者には、WP関数get_avatar
のフィルタリングを検討することをお勧めします。そうすることは、gravatarドメインを削除するために正規表現でフィルタで供給された文字列を修正することを必要とするでしょう。私はそれを試みましたが、正規表現を吸います。 :P
JetpackプラグインでPhotonモジュールが有効になっています。そのモジュールはWordPress.comのCDNを通してあなたの画像を発送します。そうしたくない場合は、JetpackのPhotonモジュールを無効にしてください。