অন্যান্য তালিকার ব্যবহারকারীদের ব্যবহারকারীর তালিকায় প্রশাসক দেখার ক্ষমতা সরাবেন?


15

( মডারেটরের মন্তব্য: মূল শিরোনামটি ছিল "ব্যবহারকারী মেনু থেকে প্রশাসক সরান")

আমি একটি ক্লায়েন্ট প্রশাসকের ভূমিকা তৈরি করেছি যা মূলত একটি সম্পাদক যা ব্যবহারকারীদের যুক্ত / সরানোর ক্ষমতা রাখে। নিবন্ধ " সম্পাদক প্রশাসক ব্যতীত কোনো নতুন ব্যবহারকারী তৈরি করতে পারেন " সাহায্য সম্পাদনা বা সত্য অ্যাডমিন ব্যবহারকারী তৈরির কথা থেকে আমার নতুন ক্লায়েন্ট প্রশাসকের ভূমিকা রাখা এ ছিল চমৎকার।

যাইহোক আদর্শ হ'ল গ্রাহক প্রশাসকরা যখন ব্যবহারকারীদের দেখছেন তখন তাদের থেকে প্রশাসকদের আড়াল করা। আমি তাদের "বিশ্বাস" করতে চাই যে তারা তাদের সাইটের প্রশাসক তবে আমি চাই না যে তারা আমার ভূমিকা / ব্যবহারকারীর এমনকি দেখতে সক্ষম হবেন - তারা যখন "ব্যবহারকারীরা" থাকবেন তখন তাদের কাছ থেকে মূলত "প্রশাসক" ভূমিকাটি লুকিয়ে রাখবেন প্যানেল।

উত্তর:


10

হাই @ কার্লোস:

আপনার থিমের functions.phpফাইলে বা .phpকোনও প্লাগইনের মধ্যে এমন কোনও ফাইলে যা আপনি লিখতে পারেন যা (যা ওয়ার্ডপ্রেস ৩.১.x এর জন্য কাজ করে) এগুলি যুক্ত করার চেষ্টা করুন:

add_action('pre_user_query','yoursite_pre_user_query');
function yoursite_pre_user_query($user_search) {
  $user = wp_get_current_user();
  if ($user->ID!=1) { // Is not administrator, remove administrator
    global $wpdb;
    $user_search->query_where = str_replace('WHERE 1=1',
      "WHERE 1=1 AND {$wpdb->users}.ID<>1",$user_search->query_where);
  }
}

আপনার যদি ওয়ার্ডপ্রেস ..০.x থাকে তবে পরিবর্তে এটি চেষ্টা করে দেখুন (যেহেতু ওয়ার্ডপ্রেস হুটো যোগ করেনি 'pre_user_query'৩.১ পর্যন্ত):

add_action('pre_user_search','yoursite_pre_user_search');
function yoursite_pre_user_search($user_search) {
  $user = wp_get_current_user();
  if ($user->ID!=1) { // Is not administrator, remove administrator
    global $wpdb;
    $user_search->query_where = str_replace('WHERE 1=1',
      "WHERE 1=1 AND {$wpdb->users}.ID<>1",$user_search->query_where);
  }
}

1
এটি কেবল যুক্ত হওয়া প্রথম ব্যবহারকারীর লুকিয়ে রাখে (যা প্রায় সর্বদা অ্যাডমিন থাকে) ... তবে প্রশাসকের যদি 1 এর বাইরে অন্য কোনও আইডি থাকে তবে আপনাকে সঠিকভাবে ক্যোয়ারীটি পরিবর্তন করতে হবে। এটি কেবলমাত্র 1 জন প্রশাসককে লুকিয়ে রাখবে, সমস্ত প্রশাসককে নয়।
EAMAN

আমি আসলে এটি কেবলমাত্র 3.1 সংস্করণে কাজ করতে পারি। কোনও পুরানো সংস্করণে একই কোডটি কৌতুকটি করতে পারে বলে মনে হয় না (3.04 এমনকি)।
কার্লোস

@ এ্যামান - সত্য, আমি সুবিধাজনক ছিলাম। কারও বেশি প্রয়োজন হলে আমি এটি সন্ধান করব।
মাইকচিন্কেল

@ কার্লোস - আপনার কি v3.0.x দরকার, বা ভি 3.1 ঠিক আছে?
মাইকচিন্কেল

@ মাইক — বাহ, হ্যাঁ আপনি যদি আমাকে সাহায্য করতে ইচ্ছুক হন তবে এটি দুর্দান্ত। আমি কোন লাভ হয়নি। আমার উদ্দেশ্যে অ্যাডমিন আইডি 1 ঠিক কাজ করে। আমি সত্যিই এটার প্রশংসা করছি.
কার্লোস

10

এখানে মাইকচিনকেলের উত্তরের একটি মোড রয়েছে যা বর্তমান ব্যবহারকারীর প্রশাসকের ভূমিকা আছে কিনা তা পরীক্ষা করে না এবং যদি এটি কেবল গ্রাহক নয় এমন ব্যবহারকারীদের বাছাই করে।

add_action('pre_user_query','yoursite_pre_user_query');
function yoursite_pre_user_query($user_search) {
    $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 = 0)", 
            $user_search->query_where
        );

    }
}

1
কেবল এফওয়াইআই ভবিষ্যতে যে কারও জন্য যা এসকিউএল যেমন আমার মতো খুব দক্ষ নয়, আপনি যদি এমন সমস্ত ব্যবহারকারীকে দেখাতে চান যা প্রশাসক নয় (সম্পাদক, লেখক, সাবস্ক্রাইবার ইত্যাদি) তবে এখনও প্রশাসককে আড়াল করেন, আপনি এই লাইনটি পরিবর্তন করতে পারেন: AND {$wpdb->usermeta}.meta_value = 0এবং পরিবর্তে মেটা মান <10 এর মতো করুন: AND {$wpdb->usermeta}.meta_value < 10)যা সমস্ত ব্যবহারকারীকে দেখায় এবং সমস্ত প্রশাসককে তাদের ব্যবহারকারীর স্তরগুলি গোপন করে যা তাদের স্তর কী তা বিবেচনা করে না।
হাওডি_এমসিজি

2

ব্যবহারকারীর স্তরগুলি হ্রাস করা হয়েছে , সুতরাং এই পদ্ধতিটি তার পরিবর্তে ক্ষমতাগুলির বিরুদ্ধে পরীক্ষা করে:

/** Hide Administrator From User List **/
function isa_pre_user_query( $user_search ) {
    if ( !current_user_can( 'administrator' ) ) { // Is Not Administrator - Remove 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}capabilities'
              AND {$wpdb->usermeta}.meta_value NOT LIKE '%administrator%' )", 
            $user_search->query_where
        );
    }
}

add_action( 'pre_user_query', 'isa_pre_user_query' );

1

pre_user_queryওয়ার্ডপ্রেস ৩.১.০ থেকে ক্রিয়াকলাপটি ব্যবহারকারীর প্রশ্নের পরিবর্তন করতে ব্যবহৃত হতে পারে


1
wp_user_queryতবে 3.6.1 এ কাজ করে না pre_user_querydoes 3.5.x সম্পর্কে জানেন না
gwillie

1
আপনি নিশ্চিত? আপনি একটি উত্স উদ্ধৃত করতে পারেন? এই ক্রিয়াটি বর্তমান ট্রাঙ্কে ব্যবহৃত হয় - ডাব্লুপি-অন্তর্ভুক্ত / ইউজার.এফপি, লাইন 549 দেখুন
জোহানেস পিল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.