0

私はワードプレスサイトをセットアップしていて、その中にマスター管理者がいて、新しいユーザーを追加できるようにサブスクライバーの役割を変更するユーザーロールマネージャーがあります。その後、サブスクライバーを、作成した「プレーヤー」という新しい役割を持つ新しいユーザーのみを作成するように制限することに成功しました。

次に、「ゲーム」と呼ばれるカスタムフィールドを各ユーザーに追加しました。サブスクライバーは、自分と「プレーヤー」のカスタムフィールドのみを変更できます。プレイヤーはこの値を変更できません。

サブスクライバーがサインインしたときに「すべてのユーザー」ページを変更して、「ゲーム」と同じcutomフィールド値を持つユーザーのリストのみを表示する必要があります。

私はあらゆる種類の異なるプラグインを試し、コードを変更するために自分の手を試しましたが、何も機能しませんでした:(

助けていただければ幸いです

アンディ

4

1 に答える 1

1

このQ&Aからコードを取得しました。他のユーザーがユーザーリストに管理者を表示する機能を削除しますか?

役割と機能に適応するために少し調整する必要があります。おそらく、との値を変更しmeta_keyますmeta_value$pagenowこれがでのみ発生することを確認するためのチェックを追加しました/wp-admin/users.php

add_action( 'pre_user_query', 'filter_users_wpse_10742' );

function filter_users_wpse_10742( $user_search ) 
{
    global $pagenow;
    if( 'users.php' != $pagenow)
        return;

    $user = wp_get_current_user();

    if ( $user->roles[0] != 'administrator' ) 
    { 
        global $wpdb;

        $user_search->query_where = 
        str_replace('WHERE 1=1', 
            "WHERE 1=1 AND {$wpdb->users}.ID IN (
                 SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta 
                    WHERE {$wpdb->usermeta}.meta_key = '{$wpdb->prefix}user_level' 
                    AND {$wpdb->usermeta}.meta_value != 10)", 
            $user_search->query_where
        );
    }
}
于 2013-02-16T01:02:31.387 に答える