サイトに新しいデフォルトのアバターを設定する方法についてのプラグインとスニペットを見ました。私は、ネットワーク上のすべての新しいサイトがネットワークのアバターをデフォルトにするように、ネットワーク全体でこれを実行できるかどうか考えています。そこからユーザーが新しいアバターをアップロードすることを可能にするプラグインは各サイトがそれ自身を定義させるのに十分でしょう。しかし彼らがやるまで、私は彼らに私のアバターが謎の男や実に醜い他の人よりも持っているほうがいいと思います。
私のmu-pluginsフォルダには、次のようなコードがあります。これにより、カスタムアバターがデフォルトのネットワーク全体として追加されますが、それ以降は個々のサイトで変更できます。
<?php
/*
Plugin Name: Network Default Avatar
Description: This Plugin sets the default avatar network-wide
*/
class Network_Default_Avatars {
// configure these two variables
static $name = "Network Default"; // text description of avatar... ie "Mystery Man"
static $avatar = "http://example.com/default-avatar.png"; // URL of avatar
function __construct() {
// default avatar
add_filter( 'avatar_defaults', array( $this, 'default_avatar' ) );
add_action( 'wpmu_new_blog', array( $this, 'new_blog_default_avatar' ) );
}
// add to list of default avatars
function default_avatar ($avatar_defaults) {
$ib_avatar[self::$avatar] = self::$name;
return array_merge( $ib_avatar,$avatar_defaults ); // Put our custom avatar on top
}
// set a new blog to have the default avatar
function new_blog_default_avatar( $blog_id ){
switch_to_blog($blog_id);
update_option( 'avatar_default', esc_url( self::$avatar ) );
restore_current_blog();
}
}
new Network_Default_Avatars();
編集#1default_option_avatar_default_filter
に関する@ Ottoのコメント新しいブログのupdate_option
アクションを代わりにデフォルトのフィルタを使うように変更しました。
<?php
/*
Plugin Name: Network Default Avatar
Description: This Plugin sets the default avatar network-wide
*/
class Network_Default_Avatars {
// configure these two variables
static $name = "Network Default"; // text description of avatar... ie "Mystery Man"
static $avatar = "http://example.com/default-avatar.png"; // URL of avatar
function __construct() {
// default avatar
add_filter( 'avatar_defaults', array( $this, 'avatar_defaults' ) );
add_filter( 'default_option_avatar_default', array( $this, 'default_avatar' ) );
}
// add to list of default avatars
function avatar_defaults ($avatar_defaults) {
$ib_avatar[self::$avatar] = self::$name;
return array_merge( $ib_avatar,$avatar_defaults ); // Put our custom avatars on top
}
function default_avatar () {
return self::$avatar;
}
}
new Network_Default_Avatars();
Avatar_defaultがより良い選択肢です。
add_filter('pre_option_avatar_default', 'se72578_avatar_default');
function se72578_avatar_default( $option ){
return 'http://example.com/your/default/here.jpg';
}
簡単です。 mu-pluginにそれを貼り付けてください。
編集:それでもサイトの所有者にデフォルトのアバターの変更を許可したい場合は、代わりにdefault_option_avatar_default
フックを使用してください。
プラグインを使用する必要があります グローバルに機能します。そして実際の機能は非常に簡単です... prefiltringdefault_avatarの値だけです。
このコードをプラグインとして使用すると、デフォルトのアバターにインストールできます。
<?php
/*
Plugin Name: Network Default Avatar
Description: This Plugin Used to be the General Framework
Author:
Version:
Author URI:
*/
add_filter('pre_option_avatar_default', 'pre_option_avatar_default');
function pre_option_avatar_default(){
return 'mystery';
}
更新新しいコード
Get_avatarフィルタフックを使用すると、元のアバターを置き換えることができます
add_filter('get_avatar', 'get_avatar_custom',10,5);
function get_avatar_custom($avatar, $id_or_email, $size, $default, $alt){
// your code here...
/*
** Example code will check if current avatar string is contain "mystery" avatar if yes, it will
** try to get site_default_avatar property from options table (you can create a UI for entering this value)
** if system_default_avatar exists - filter will repalce default value (first argument of this filter callback)
** and return new value
** if (strpos($avatar, '561e2e7a9910204ba43fa4097e45c5e9') !== false
** && get_option('site_default_avatar', false) != ''){
** $avatar = "<img alt='".esc_attr($alt)."' src='".get_option('site_default_avatar', false)."'
** class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />";
** }
**
*/
return $avatar;
}
... get_avatar関数を使用してください。アバターの取得はプラグイン可能な機能です。つまり、すべてのプラグイン、テーマ、またはmu-pluginの場合は無効にできます。
function get_avatar( $id_or_email, $size = '96', $default = '', $alt = false {
// your code here
return $some_html_with_avatar_picture;
}