Add new column to sites page

时间:2011-10-06 作者:JonnyPlow

我正在尝试在我的网络站点页面的一列中获取信息。下面可以很好地获取每个站点的网络站点ID。

如何使其在我的blogname\\u选项表的option\\u name列中显示项目(blog\\u expire)的option\\u值?

class Add_Blog_ID {
public static function init() {
    $class = __CLASS__ ;
    if ( empty( $GLOBALS[ $class ] ) )
        $GLOBALS[ $class ] = new $class;
}
public function __construct() {
    add_filter( \'wpmu_blogs_columns\', array( $this, \'get_id\' ) );
    add_action( \'manage_sites_custom_column\', array( $this, \'add_columns\' ), 10, 2 );
    add_action( \'manage_blogs_custom_column\', array( $this, \'add_columns\' ), 10, 2 );
    add_action( \'admin_footer\', array( $this, \'add_style\' ) );
}
public function add_columns( $column_name, $blog_id ) {
    if ( \'blog_id\' === $column_name )
        echo $blog_id;
    return $column_name;
}
// Add in a column header
public function get_id( $columns ) {
    $columns[\'blog_id\'] = __(\'ID\');
    return $columns;
}
public function add_style() {
    echo \'<style>#blog_id { width:7%; }</style>\';
}
}
add_action( \'init\', array( \'Add_Blog_ID\', \'init\' ) );

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

以下是您的类的修改版本,应该可以使用:

class Add_Blog_ID {
    public static function init() {
        $class = __CLASS__ ;
        if ( empty( $GLOBALS[ $class ] ) )
            $GLOBALS[ $class ] = new $class;
    }
    public function __construct() {
        add_filter( \'wpmu_blogs_columns\', array( $this, \'get_id\' ) );
        add_action( \'manage_sites_custom_column\', array( $this, \'add_columns\' ), 10, 2 );
        add_action( \'manage_blogs_custom_column\', array( $this, \'add_columns\' ), 10, 2 );
        add_action( \'admin_footer\', array( $this, \'add_style\' ) );
    }
    public function add_columns( $column_name, $blog_id ) {
        if ( \'blog_id\' === $column_name ){
            echo $blog_id;
            //render column value
        }elseif( \'blog_expire\' === $column_name ){
            echo get_blog_option($blog_id,\'blog_expire\',"Default Value To Show if none");
        }
        return $column_name;
    }
    // Add in a column header
    public function get_id( $columns ) {
        $columns[\'blog_id\'] = __(\'ID\');
        //add extra header to table
        $columns[\'blog_expire\'] = __(\'Blog Expires\');

        return $columns;
    }
    public function add_style() {
        echo \'<style>#blog_id { width:7%; }</style>\';
    }
}
add_action( \'init\', array( \'Add_Blog_ID\', \'init\' ) );

SO网友:brasofilo

这不是问题的答案,而是JonnyPlow&;的一个额外功能;Bainternet代码。

我希望ID列在开头,而不是结尾。这可以通过以下方式实现:

public function get_id( $columns ) {
    $columns[\'blog_expire\'] = __(\'Blog Expires\');
    $in = array(\'blog_id\' => \'ID\');
    $columns = $in + $columns; // array_unshift don\'t work here, don\'t ask me why
    return $columns;
}
但是,如果我们想微调并将其作为第二列(或第三列),那么extra function 很方便。

尽管admin_footer 在其他屏幕中是无害的,我只在sites.phpblog_expire 没有为我呈现任何内容,我改为template 快速查看每个网站使用的主题

class Add_Blog_ID {
    public static function init() {
        $class = __CLASS__ ;
        if ( empty( $GLOBALS[ $class ] ) )
            $GLOBALS[ $class ] = new $class;
    }
    public function __construct() {
        add_filter( \'wpmu_blogs_columns\', array( $this, \'get_id\' ) );
        add_action( \'manage_sites_custom_column\', array( $this, \'add_columns\' ), 10, 2 );
        add_action( \'manage_blogs_custom_column\', array( $this, \'add_columns\' ), 10, 2 );
        add_action( \'admin_footer-sites.php\', array( $this, \'add_style\' ) );
    }

    private function array_put_to_position(&$array, $object, $position, $name = null) {
        $count = 0;
        $return = array();
        foreach ($array as $k => $v) {  
                // insert new object
                if ($count == $position) {  
                        if (!$name) $name = $count;
                        $return[$name] = $object;
                        $inserted = true;
                }  
                // insert old object
                $return[$k] = $v;
                $count++;
        }  
        if (!$name) $name = $count;
        if (!$inserted) $return[$name];
        $array = $return;
        return $array;
    }

    public function add_columns( $column_name, $blog_id ) {
        if ( \'blog_id\' === $column_name ) {
            echo $blog_id;
            //render column value
        } elseif ( \'template\' === $column_name ) {
            echo get_blog_option($blog_id, \'template\', "Default Value To Show if none");
        }
        return $column_name;
    }
    // Add in a column header
    public function get_id( $columns ) {
        $columns = $this->array_put_to_position($columns, \'ID\', 1, \'blog_id\');
        $columns[\'template\'] = __(\'Using Theme\');
        return $columns;
    }

    public function add_style() {
        echo \'<style>#blog_id { width:7%; }</style>\';
    }
}
add_action( \'init\', array( \'Add_Blog_ID\', \'init\' ) );

结束

相关推荐

Multisite features

我在考虑创建一个由用户创建的博客组成的网络。我读过一些关于wordpress多站点功能的文章,我想知道这是否是我想要的。。。我需要做的是创建一个网站,让用户注册并创建他们的onw博客。wordpress multisite是否提供此功能?如果不是,手动将此功能实现到wp中是可行的,还是应该从0或其他平台开始?非常感谢。