আমি বর্তমানে যে প্লাগিনে কাজ করছি তার জন্য আমি প্রতিটি ভূমিকা ভিত্তিতে প্লাগইন সেটিংসে (যেমন, অ্যাডমিন মেনু পৃষ্ঠাগুলি) অ্যাক্সেস মঞ্জুরি / সীমাবদ্ধ করতে চেয়েছিলাম ।
সুতরাং, আমাকে একটি নতুন প্লাগইন-নির্দিষ্ট যুক্ত capability
করতে হয়েছিলuser roles
।
দুর্ভাগ্যক্রমে, কায়সারের উত্তরটি আর কাজ করছে না বলে মনে হচ্ছে, সুতরাং উপরে উল্লিখিত কার্যকারিতাটি কীভাবে মঞ্জুর করতে পারি সে চেষ্টা করার জন্য আমি কিছু সময় ব্যয় করেছি।
তালিকা
আমি আপনার সাথে আমার কোডটি ভাগ করে নেওয়ার আগে, সরল পাঠ্যে এখানে কী রয়েছে:
- প্লাগইন অ্যাক্টিভেশনে,
THE_NEW_CAP
একটি নির্দিষ্ট অন্তর্নির্মিত ক্ষমতা BUILT_IN_CAP
(আমার ক্ষেত্রে edit_pages
:) রোলগুলিতে নতুন দক্ষতা যুক্ত করুন ।
- প্রতিটি পৃষ্ঠার লোডে, ১ টি করুন (অর্থাত্, আবার সামর্থ্য যুক্ত করুন)। এটি কেবলমাত্র প্রয়োজনীয় যদি আপনি প্লাগইন সক্রিয় হওয়ার পরে তৈরি করা নতুন সম্ভাব্য ভূমিকার জন্য অ্যাকাউন্ট করতে চান। অতএব, এই নতুন ভূমিকাগুলির প্লাগ-ইন-সক্ষমতা নেই, এমনকি যদি তাদের প্রয়োজনীয় বিল্ট-ইন সক্ষমতা থাকে।
- আপনি যা চান তার জন্য নতুন ক্ষমতাটি ব্যবহার করুন। যেমন আগে ব্যাখ্যা করা হয়েছে, আমি এটি প্লাগিনের অ্যাডমিন মেনু পৃষ্ঠাগুলিতে অ্যাক্সেস মঞ্জুরি / সীমাবদ্ধ করার জন্য ব্যবহার করি, সুতরাং এটি নিম্নলিখিত কোড উদাহরণে এটি করা হয়।
- প্লাগইন নিষ্ক্রিয়করণে, ক্ষমতাটি সরিয়ে দিন। প্লাগইনটি আনইনস্টল করার সময় অবশ্যই আপনি এটি করতে পারেন। যেভাবেই হোক, শেষ পর্যন্ত এটি করুন।
কোড
এবং এখানে উপরোক্ত তালিকাটি কোডে রূপান্তরিত হয়েছে:
It সেট আপ করা হচ্ছে
class WPSE35165Plugin {
public function __construct() {
// Register hooks
register_activation_hook(__FILE__, array(__CLASS__, 'activation'));
register_deactivation_hook(__FILE__, array(__CLASS__, 'deactivation'));
// Add actions
add_action('admin_menu', array(__CLASS__, 'admin_menu'));
}
public function activation() {
self::add_cap();
}
// Add the new capability to all roles having a certain built-in capability
private static function add_cap() {
$roles = get_editable_roles();
foreach ($GLOBALS['wp_roles']->role_objects as $key => $role) {
if (isset($roles[$key]) && $role->has_cap('BUILT_IN_CAP')) {
$role->add_cap('THE_NEW_CAP');
}
}
}
" এটি ব্যবহার করছি
// Add plugin menu pages to admin menu
public function admin_menu() {
// Remove the following line if you don't care about new roles
// that have been created after plugin activation
self::add_cap();
// Set up the plugin admin menu
add_menu_page('Menu', 'Menu', 'THE_NEW_CAP', …);
add_submenu_page('wpse35165', 'Submenu', 'Submenu', 'THE_NEW_CAP', ...);
}
»এটি পরিষ্কার করা
public function deactivation() {
self::remove_cap();
}
// Remove the plugin-specific custom capability
private static function remove_cap() {
$roles = get_editable_roles();
foreach ($GLOBALS['wp_roles']->role_objects as $key => $role) {
if (isset($roles[$key]) && $role->has_cap('THE_NEW_CAP')) {
$role->remove_cap('THE_NEW_CAP');
}
}
}
}
দ্রষ্টব্য: দয়া করে বড় হাতের অক্ষমতা ব্যবহার করবেন না। এটি কেবল পাঠযোগ্যতার জন্য।