web-dev-qa-db-ja.com

ユーザーリストからユーザー名を隠す

次のコードを使用して、ユーザー管理からユーザー名列を非表示にしました。

function modify_user_columns($column) {
    $column = array(
        "cb" => "<input type=\"checkbox\" />",
        "username" => __('Username'),
        "name" => __('Name'),
        "email" => "E-mail",
        "birthdate" => "Narozeniny",
        "sleva_moto" => "Sleva moto"


    );
    return $column;
}
add_filter('manage_users_columns','modify_user_columns');

問題は、ユーザー名をクリックすると通常ユーザーの詳細がアクセスされるため、現在どのユーザーの詳細も入力できないことです。詳細ページへのリンクをName列に追加する方法はありますか?

3
user1049961

Name列の内容を変更するための直接フィルタはありません。それで、あなたが欲しいものを手に入れるために、 'Name'カラムも削除して、そして我々自身のNameカラムを作るべきです。したがって、modify_user_columns関数は次のようになります。

function modify_user_columns($column) {
    $column = array(
        "cb" => "<input type=\"checkbox\" />",
        "wdm_name" => __('Name'),
        "email" => "E-mail",
        "birthdate" => "Narozeniny",
        "sleva_moto" => "Sleva moto"


    );
    return $column;
}

これで、[名前]列に表示できる内容を制御できます。フィルタmanage_users_custom_columnを使用して、そのName列にコンテンツを追加できます。

add_filter( 'manage_users_custom_column', 'wdm_display_name_with_edit_link', 10, 3 );

function wdm_display_name_with_edit_link($content, $column_name, $user_object_id){
    if ($column_name == 'wdm_name' && 
        current_user_can( 'edit_user',  $user_object_id) ) {

        //get info of user
        $user_object = get_userdata($user_object_id); 

        //generate edit link
        $edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ), get_edit_user_link( $user_object->ID ) ) ); 

        //Generate the complete Name with edit link
        $content = "<strong><a href=\"$edit_link\">$user_object->first_name $user_object->last_name</a></strong><br/>"; 
    } else {
        //If logged in user does not have rights 
        //to edit users, just show Name of users
        $content = "<strong>$user_object->first_name $user_object->last_name</strong><br />"; 
    }

    return $content;
}

今すぐ編集リンクで名前が表示されます。お役に立てれば。 :)

1
WisdmLabs