私はBPアバターを上書きするためにあらゆることを試みました。基本的にすべてが同じ解決策を指している約5〜6の異なるGoogleの結果が見つかりました。
function override_bp_member_avatar($url) {
return get_stylesheet_directory_uri() . '/default_avatar.png';
}
add_filter('bp_core_fetch_avatar_no_grav', '__return_true'); // http://codex.buddypress.org/extending-buddypress/tips-tricks/
add_filter('bp_core_mysteryman_src', 'override_bp_member_avatar'); // http://www.buddyboss.com/instructions/
それでもうまくいきません。
メンバーにデフォルトのアバターを使用して成功した人はいますか?
引用するフィルターは、デフォルト/フォールバックアバター専用です。 BPアバターを完全に置き換える場合、キーフィルターはbp_core_fetch_avatar
とbp_core_fetch_avatar_url
です。後者はHTMLアバター要素全体をフィルタリングし、後者はURLのみをフィルタリングします。
どのようにフィルタリングを行うかは、取得したい空想によって異なります。 bp_core_fetch_avatar
は、アバターHTMLを完全に再構築する場合、多くの便利なパラメーターを渡します。 https://buddypress.trac.wordpress.org/browser/tags/1.5.5/bp- core/bp-core-avatars.php#L297 それ以外の場合は、簡単な修正のために、preg_replace()
URLのみを使用できます。
/**
* This function returns your new avatar URL. You can put whatever logic in here you want
*/
function wpse_49216_my_new_avatar_url() {
return 'http://example.com/avatar.jpg';
}
add_filter( 'bp_core_fetch_avatar_url', 'wpse_49216_my_new_avatar_url' );
function wpse_49216_filter_bp_avatar( $html ) {
return preg_replace( '/src=".+?"/', 'src="' . wpse_49216_my_new_avatar_url() . '"', $html );
}
add_filter( 'bp_core_fetch_avatar', 'wpse_49216_filter_bp_avatar' );
編集:上記の方法は、すべてのアバターを置き換えます。デフォルト/フォールバックアバターのみを変更する場合(自分自身をアップロードしていないユーザー向け)、試してください
/**
* Disable Gravatar throughout BP
*/
add_filter( 'bp_core_fetch_avatar_no_grav', '__return_true' );
/**
* Provide a global user avatar default
*/
function wpse_49216_my_new_default_avatar_url() {
return 'http://example.com/avatar.jpg';
}
add_filter( 'bp_core_default_avatar_user', 'wpse_49216_my_new_default_avatar_url' );