কেবল অ্যাডমিনগুলিতে ড্যাশবোর্ড অ্যাক্সেসকে কীভাবে সীমাবদ্ধ করবেন?


19

অ্যাডমিন বাদে আমরা কীভাবে ডাব্লুপি প্রশাসক অঞ্চলে অ্যাক্সেস সীমাবদ্ধ করব?
আমাদের সাইটে ব্যবহারকারীদের নিজস্ব প্রোফাইল পৃষ্ঠা রয়েছে যা তাদের প্রয়োজনীয় সমস্ত ফাংশন করে।

সুতরাং অ্যাডমিনগুলি অ্যাডমিন ব্যতীত সকলের সীমা ছাড়াই উচিত।

কিভাবে যে কি?


আপনি বলতে চাইছেন যে 'সম্মুখ মুখোমুখি' ব্যবহারকারীর পৃষ্ঠাগুলি আপনার yourdomain.com/wp-admin এ অবস্থিত কোনও কিছুর অ্যাক্সেসের প্রয়োজন নেই ?
কর্টিজমলে

হ্যাঁ অবশ্যই. এতে কিছু ভুল আছে?
রবিন আই নাইট

নাহ কেবল স্পষ্ট করে বলছে।
কার্টিজমলে

উত্তর:


19

আমরা এই admin_initক্রিয়াটির দিকে ঝুঁকতে পারি এবং চেক করতে পারি যে current_user_can()ব্যবহারকারী বর্তমান ফাংশনটি ব্যবহার করে প্রশাসক কিনা তা দেখতে ব্যবহারকারীর বর্তমান ব্যবহারকারী পারে কি না manage_options, যা কেবলমাত্র প্রশাসকই করতে পারেন।

এই কোডটি যখন আপনার ফাংশন.এফপি ফাইলটিতে আটকানো হবে তখন কোনও প্রশাসক ড্যাশবোর্ড অ্যাক্সেস করার চেষ্টা করার সময় একটি বার্তা প্রদর্শিত হবে:

function wpse_11244_restrict_admin() {

    if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
        return;
    }

    if ( ! current_user_can( 'manage_options' ) ) {
        wp_die( __( 'You are not allowed to access this part of the site' ) );
    }
}

add_action( 'admin_init', 'wpse_11244_restrict_admin', 1 );

আপনি যদি পছন্দ করেন তবে পরিবর্তে হোম পেজে ব্যবহারকারীকে পুনর্নির্দেশ করে আপনি আরও ভাল ব্যবহারকারীর অভিজ্ঞতা সরবরাহ করতে পারেন:

function wpse_11244_restrict_admin() {

    if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
        return;
    }

    if ( ! current_user_can( 'manage_options' ) ) {
        wp_redirect( home_url() );
        exit;
    }
}

add_action( 'admin_init', 'wpse_11244_restrict_admin', 1 );

আপনি যদি তাদের প্রোফাইল পৃষ্ঠায় ব্যবহারকারীকে পুনর্নির্দেশ করতে চান home_url()তবে লিঙ্কটি দিয়ে উপরের কোডটিতে প্রতিস্থাপন করুন।


এই উত্তরটি প্রশ্নের প্রয়োজনীয়তা পূরণ করে না। প্রথমত, আপনি "ম্যানেজ_পোশনগুলি" ক্ষমতা সহ কোনও ব্যবহারকারীকে প্রশাসক অঞ্চলে অ্যাক্সেস অক্ষম করছেন এবং কেবলমাত্র প্রশাসককে নয়, একাধিক ভূমিকাতে একটি ক্ষমতা বরাদ্দ করা যেতে পারে। অতিরিক্তভাবে, "ম্যানেজ_অপশন" ক্ষমতা প্রশাসক থেকে সরানো যেতে পারে।
সাইবমেটা

manage_optionsসামর্থ্যটির জন্য @cybmeta পরীক্ষা করা কোনও প্রশাসক ব্যবহারকারীর জন্য যাচাই করার জন্য গ্রহণযোগ্য উপায়। এমনকি মার্ক জাকিথ তাই বলেছেন
শেয়া

প্রশ্নকারী অ্যাডমিন ব্যবহারকারীর ভূমিকা যাচাই করার জন্য ঠিক জিজ্ঞাসা করেছিলেন এবং আমি মনে করি যে তাকে সঠিক উত্তর দেওয়া এবং কখন এবং কেন সক্ষমতার জন্য পরীক্ষা করা ভাল হতে পারে তা ব্যাখ্যা করা গুরুত্বপূর্ণ। আপনি বলছেন manage_optionsএমন কিছু যা কেবল "প্রশাসকরা" করতে পারে এবং এটি সত্য নয়, manage_optionsএটি একটি ক্ষমতা এবং এডমিনের ভূমিকা থেকে সরানো যেতে পারে বা অন্যান্য ব্যবহারকারীর ভূমিকাতে নির্ধারিত হতে পারে। গুরুত্বপূর্ণ জিনিসটি হল আপনি কী করতে চান তা জানতে এবং সর্বোত্তম উপায়টি বেছে নেওয়া। আমার উত্তর দেখুন, আমি এটি ব্যাখ্যা।
সাইবমেটা

আপনি স্যার, একটি +1 পান! :) এই জন্য কয়েক ঘন্টা খুঁজছেন! এছাড়াও একটি ছোট উন্নতি। একা সাইট আপনার চেক যথেষ্ট। বহু-সাইটের জন্য আপনাকে প্রতিস্থাপন করতে চান চাই manage_optionsসঙ্গে manage_network। পরেরটি ডিফল্ট "সাইট প্রশাসক" এর জন্য ড্যাশবোর্ডকে অক্ষম করে দেবে তবে সুপার প্রশাসক (নেটওয়ার্ক প্রশাসক) এর জন্য অ্যাক্সেস উপলভ্য রাখবে।
রকেট

এই উত্তরটির সাথে মুখ্য বিষয়টি এটি আজাক্স কলগুলির সাথে সংঘর্ষ। নিচে @cybmeta এর সঠিক উত্তর রয়েছে।
দাঙ্গাঘটিত

9

আপনি একটি প্লাগইন লিখতে পারেন এবং এতে প্রবেশ করতে পারেন admin_init

কোডেক্স আসলে আপনি যে বৈশিষ্ট্যটি সন্ধান করছেন তাতে একটি উদাহরণ দেয়।

http://codex.wordpress.org/Plugin_API/Action_Reference/admin_init#Example:_Access_control


1
এটি একটি সম্পূর্ণ উত্তর নয় - এটি আরও একটি ইঙ্গিত এবং একটি লিঙ্ক হওয়া উচিত
shea

9

প্রদত্ত কয়েকটি উত্তর বেশিরভাগ পরিস্থিতিতেই ঠিকঠাক হতে পারে তবে আমি মনে করি যে এর মধ্যে কেউই যা বলা হচ্ছে ঠিক তেমনটি করার ওয়্যারেন্টি দেয় না কারণ উত্তরের কোনওটিই ব্যবহারকারীর ভূমিকা চেক করে না, তারা দক্ষতা এবং দক্ষতাগুলি পরীক্ষা করে ফর্মের ভূমিকা নির্ধারিত এবং মুছে ফেলা যায়। সুতরাং, একটি সঠিক উত্তর দিতে, ব্যবহারকারীর ভূমিকা অবশ্যই পরীক্ষা করা উচিত, ক্ষমতাগুলি নয়:

add_action( 'admin_init', 'allow_admin_area_to_admins_only');
function allow_admin_area_to_admins_only() {

      if( defined('DOING_AJAX') && DOING_AJAX ) {
            //Allow ajax calls
            return;
      }

      $user = wp_get_current_user();

      if( empty( $user ) || !in_array( "administrator", (array) $user->roles ) ) {
           //Redirect to main page if no user or if the user has no "administrator" role assigned
           wp_redirect( get_site_url( ) );
           exit();
      }

 }

যদি আপনি এটি পরীক্ষা করতে চান যে ব্যবহারকারীর "ম্যানেজ_অপশন" ক্ষমতা রয়েছে, আপনি এটি করতে পারেন। আসলে, এটি বেশিরভাগ ক্ষেত্রে সেরা বিকল্প is যদিও এই ক্ষমতা অ্যাডমিনিস্ট্রেটর ব্যবহারকারীদের সাথে ডিফল্টরূপে জড়িত, ক্ষমতাটি অ্যাডমিনের ভূমিকা থেকে সরানো যেতে পারে বা এটি অন্য ব্যবহারকারীর ভূমিকাতে নির্ধারিত হতে পারে। এ কারণেই বেশিরভাগ ক্ষেত্রে ব্যবহারকারী কী করতে পারে বা কী করতে পারে তা যাচাই করা ব্যবহারকারীর ভূমিকা যাচাই করার চেয়ে ভাল। সুতরাং, বেশিরভাগ ক্ষেত্রে দক্ষতার জন্য যাচাই বাছাই করার উপায় হওয়া উচিত তবে আপনি এই ধারণাটি পরিষ্কার করে নিতে পারেন এবং আপনার পরিস্থিতি এবং উদ্দেশ্যটির জন্য সেরা বিকল্পটি বেছে নেন:

add_action( 'admin_init', 'admin_area_for_manage_options_only');
function admin_area_for_manage_options_only() {

      if( defined('DOING_AJAX') && DOING_AJAX ) {
            //Allow ajax calls
            return;
      }


      if( ! current_user_can( "manage_options" ) ) {
           //Redirect to main page if the user has no "manage_options" capability
           wp_redirect( get_site_url( ) );
           exit();
      }

 }

এটা সঠিক উত্তর. এটি আজাক্স কলগুলির সাথে সংঘর্ষে আসে না।
দাঙ্গাঘটিত

3

প্রশাসন প্লাগইন চেষ্টা করুন ।
আপনি এটি দিয়ে বেশ ভাল জিনিস লক করতে পারেন।

আপনি htaccess ফাইলের মাধ্যমে অ্যাক্সেস সেট আপ করার চেষ্টা করতে পারেন


1
প্রশাসনের জন্য +1। এটি একটি প্লাগইনের একটি জন্তু । কিছু কাস্টম রোল ম্যানেজার প্লাগইনের সাথে মিলিত হয়, এটি কেবল কাঁপায়। (যদি আমি ব্যক্তিগত মতামতকে ক্ষমা করে দিই): :::: সর্বশেষ নোট হিসাবে: দয়া করে কেবল লিঙ্কগুলির চেয়ে আরও তথ্য দিন, এটি উত্তরটিকে আরও সম্পূর্ণ করে তোলে।
brasofilo

2
function wpse_11244_restrict_admin() {
    if (!current_user_can('update_core')) {
        wp_die(__('You are not allowed to access this part of the site'));
    }
}

add_action('admin_init', 'wpse_11244_restrict_admin', 1);

4
'administrator'একটি ক্ষমতা না। এটি কেবল পিছনের সামঞ্জস্য বজায় রাখতে কাজ করে। 'update_core'বা অন্যান্য অ্যাডমিন সক্ষমতার জন্য পরীক্ষা করুন ।
ফুসিয়া

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

0

এই লাইন আপনার মধ্যে রাখুন functions.php

function baw_no_admin_access()
{
 if( !current_user_can( 'administrator' ) ) {
     wp_redirect( home_url() );
     die();
  }
}
add_action( 'admin_init', 'baw_no_admin_access', 1 );

3
@ টোসচো বলেছিলেন 'প্রশাসক' কোনও ক্ষমতা নয়, পরিবর্তে 'আপডেট_কোয়ার' এর মতো প্রশাসনিক ক্ষমতা ব্যবহার করুন
পিয়ের

0

শেষ ব্যবহারকারীর মুখের ত্রুটিগুলির মাধ্যমে কখনও এটি ব্যবহার করুন। একটি ভাল ইউএক্স বিরুদ্ধে। এই কোডগুলি সেগুলি হোমে পুনঃনির্দেশ করে।

    add_action( 'init', 'blockusers_init' );
function blockusers_init() {
if ( is_admin() && ! current_user_can( 'administrator' ) &&
! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
wp_redirect( home_url() );
exit;
}
}

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.