在网络范围内设置默认化身

时间:2012-11-14 作者:helgatheviking

我已经看到了关于如何为站点设置新的默认化身的插件和代码片段。我想知道这是否可以在网络范围内完成,这样网络上的每个新站点都会将网络的头像作为其主要默认设置。从那里,允许用户上传新头像的插件将足以让每个站点定义自己的头像。但在他们这样做之前,我宁愿他们拥有我的阿凡达,而不是神秘人或其他完全丑陋的人。

3 个回复
最合适的回答,由SO网友:helgatheviking 整理而成

在我的mu插件文件夹中,我现在有以下代码,它添加了一个自定义的头像作为默认的网络范围,但允许每个站点在此后更改它。

<?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();
EDIT #1根据@Otto对default_option_avatar_default_filter 我已经更改了新博客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();

SO网友:Otto

avatar\\u默认值是更好的选择。

add_filter(\'pre_option_avatar_default\', \'se72578_avatar_default\');
function se72578_avatar_default( $option ){
   return \'http://example.com/your/default/here.jpg\';
}
简单。将其插入mu插件,您就可以开始了。

编辑:如果您仍希望允许网站所有者更改默认头像,请使用default_option_avatar_default 改为挂钩。

SO网友:Oleg Butuzov

Must Use Plugins 将实现全局功能。实际上,功能非常简单。。。仅预过滤default_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\';
    }
Update 新建代码

使用get\\u avatar filter hook,您可以替换原始的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\\u avatar函数。get avatar是一个可插入的功能,这意味着您可以在任何插件、主题或我们的mu插件中验证它

function get_avatar( $id_or_email, $size = \'96\', $default = \'\', $alt = false {
   // your code here
   return $some_html_with_avatar_picture; 
}

结束