将列添加到页面,帖子和媒体的管理视图

时间:2013-07-10 14:34:38

标签: php wordpress

我想添加一个在页面/帖子中显示用户角色的列

这是我的代码:

$this->My_displays= array(x=> 'text','y'=> 'text2');

add_filter('manage_users_columns', array(&$this,'myusers'));    
add_action('manage_users_custom_column',  array(&$this,'function_column'), 10, 3);
add_filter( 'group_user_sortable_columns', array(&$this,'column_sortable' ));
add_filter( 'request', array(&$this,'column_orderby' ));

//Posts 
add_filter('manage_posts_columns', array(&$this,'myusers'));    
add_action('manage_posts_column_column',  'function_column', 10, 3);

//Pages
add_filter('manage_pages_columns', array(&$this,'myusers'));    
add_action('manage_pages_custom_column',  array(&$this,'function_column'), 10, 3);

//Media
add_filter( 'manage_media_columns',  array(&$this,'myusers'));
add_action( 'manage_media_custom_column', array(&$this,'function_column'), 10, 3);   

function myusers($columns) {
    $columns['myusers'] = __('Views', 'myusers');
    return $columns;
}

function function_column( $value, $columnz, $ids ) {
    if ( 'myusers' != $columnze )
       return $value;
    $vars = get_user_meta($ids, 'myusers', TRUE);
    return $this->My_displays[$vars];
}

在用户中,它可以正常工作,但不适用于页面和媒体。

2 个答案:

答案 0 :(得分:0)

它不起作用,因为manage_users_columns采用的参数与其他manage_*的参数不同。

对于用户:

function user_column_callback( $return_value, $column_name, $user_id ) 

对于其他人:

function posts_types_callback( $column_name, $post_id ) 

您必须创建两个回调。并使用$post_id来抓取帖子/页面/媒体作者。

答案 1 :(得分:0)

@brasofilo谢谢你的回复,我做了这个

function posts_types_callback( $column_name, $post_id ) 
{   
if ($column_name == 'myusers') {  
            $Var = get_post_meta($post_id, ' myusers ', TRUE);
            return $this-> My_displays [$Var];
}
$this->My_displays= array(x=> 'text','y'=> 'text2'); 

在用户中它可以正常工作,如果选中了文本,则显示文本,否则为text2!