নির্দিষ্ট ব্যবহারকারীর ভূমিকা থেকে কাস্টম পোস্টের প্রকারের UI / মেনুটি লুকানো সম্ভব?


20

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

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

আইডি সত্যিই এটি কোনও প্লাগইন দিয়ে সম্পাদন করতে পছন্দ করে না তবে যদি এমন কিছু থাকে যা অ-পুষ্পবিহীন উপায়ে কৌতুক করতে পারে যা আমার মনে হয় এখনও দুর্দান্ত।

আপনার সহায়তার জন্য ধন্যবাদ, এসবি

উত্তর:


39

প্রশাসনিক নন ব্যবহারকারীদের কাছ থেকে কোনও পোস্টের মেনু আইটেমটি গোপন করতে:

function wpse28782_remove_menu_items() {
    if( !current_user_can( 'administrator' ) ):
        remove_menu_page( 'edit.php?post_type=your_post_type' );
    endif;
}
add_action( 'admin_menu', 'wpse28782_remove_menu_items' );

your_post_type আপনার প্রকৃত পোস্ট ধরণের নাম হওয়া উচিত।

EDIT-

অন্যান্য মেনু পৃষ্ঠাগুলি আপনি মুছে ফেলতে পারেন:

remove_menu_page('edit.php'); // Posts
remove_menu_page('upload.php'); // Media
remove_menu_page('link-manager.php'); // Links
remove_menu_page('edit-comments.php'); // Comments
remove_menu_page('edit.php?post_type=page'); // Pages
remove_menu_page('plugins.php'); // Plugins
remove_menu_page('themes.php'); // Appearance
remove_menu_page('users.php'); // Users
remove_menu_page('tools.php'); // Tools
remove_menu_page('options-general.php'); // Settings

সম্পাদনা 2 -

প্লাগইন মেনু আইটেমগুলি সরানো হচ্ছে।

প্লাগইনগুলির জন্য, মনে হয় আপনার কেবল page=ক্যোয়ারী ভারের দরকার । অন্য জিনিসটি লক্ষণীয় হ'ল অগ্রাধিকার, যা তৃতীয় যুক্তি admin_menu add_action। এটি পর্যাপ্ত পরিমাণে সেট করতে হবে (সংখ্যা যত বেশি, অগ্রাধিকারটি তত কম) যাতে প্লাগইনগুলি ইতিমধ্যে মেনুতে নিজেকে যুক্ত করে।

function wpse28782_remove_plugin_admin_menu() {
    if( !current_user_can( 'administrator' ) ):
        remove_menu_page('cart66_admin');
    endif;
}
add_action( 'admin_menu', 'wpse28782_remove_plugin_admin_menu', 9999 );

এরকম একটি সহজ সমাধান, আপনাকে ধন্যবাদ পুরোপুরি কার্যকর!
মিঃ ব্রাউন

কৌতূহলী, এমন wpse28782_remove_menu_itemsকোনও ফাংশনের নাম যা আপনি এলোমেলোভাবে বেছে নিয়েছেন বা এটি ডাব্লুপি'র কাছে নির্দিষ্ট? .... এছাড়াও, আমি কীভাবে এই ধারণাটি প্রসারিত করব এবং অতিরিক্ত সিপিটির লক্ষ্যবস্তু করব, বা অন্য দেশীয় ডাব্লুপি মেনুর ক্ষেত্রে? আবার সাহায্যের জন্য ধন্যবাদ!
মিঃ ব্রাউন

1
@ মিঃ ব্রাউন - ফাংশনটির নামটি আপনার প্রশ্নের আইডি (ইউআরএল চেক করুন) এর উপর ভিত্তি করে তৈরি করা হয়েছে, কেবলমাত্র অনন্য হওয়ার গ্যারান্টিযুক্ত কিছু, আপনি যতক্ষণ চাইবেন এটি নামকরণ করতে পারবেন যতক্ষণ না এটি বিদ্যমান ফাংশন নয়। আপনি remove_menu_pageঅন্যান্য সিপিটি, পাশাপাশি অন্যান্য মেনু আইটেমগুলি সরাতে অতিরিক্ত কল যুক্ত করতে পারেন, আমার সম্পাদনা দেখুন।
মিলো

তাই দুর্দান্ত, আবার ধন্যবাদ। এটি একটি আশ্চর্যজনক সমাধান।
মিঃ ব্রাউন

কেবল একটি শেষ জিনিস - আমি ইনস্টল হওয়া প্লাগইনগুলি থেকে অতিরিক্ত মেনুগুলির জন্য ব্যবহৃত টেম্পলেট নামটি কীভাবে সন্ধান করব? অর্থাত। remove_menu_page('cart_plugin');
মিঃ ব্রাউন

2

গৃহীত উত্তরটি কাস্টম পোস্টের ধরণগুলি (এবং অন্যান্য মিশ্রিত আইটেমগুলি) বর্ণিত হিসাবে লুকানোর জন্য ব্যবহার করা যেতে পারে। তবে আপনি যদি সিপিটি ইউআই প্লাগইন মেনু নিজেই আড়াল করতে চান তবে আপনি যে ক্রিয়াটি এটি মেনুতে প্রথম স্থানে যুক্ত করতে পারেন তা সরাতেও পারেন।

if( !current_user_can( 'administrator' ) ) {
    remove_action( 'admin_menu', 'cptui_plugin_menu' );
}

1

এছাড়াও আপনি ব্যবহার করতে পারেন Adminimize প্লাগইন। এই প্লাগইনে সমস্ত পোস্ট ধরণের, মেটা বাক্স এবং বিভিন্ন রোলগুলিতে লুকানোর জন্য আরও অনেক কিছু রয়েছে। কোনও কোডিং নেই।


0

আপনি যদি সেই প্লাগইনের মেনুটি "কাস্টম পোস্ট টাইপ ইউআই" ওরফে সিপিটিইউআই লুকিয়ে রাখতে চান তবে সরানো_মেনু_পৃষ্ঠার সাথে প্রথম লিঙ্কটি একত্রিত করে এটি সম্ভব নয়।

আপনাকে যা করতে হবে তা হ'ল;

function wpse_28782_remove_menus() {
    remove_menu_page('cptui_main_menu');
}
add_action('admin_init', 'wpse_28782_remove_menus');

0

সমস্ত শপ ম্যানেজার ব্যবহারকারীর ভূমিকা (ওয়ার্ডপ্রেস 5.1.1) এর জন্য শীর্ষ-স্তরের মেনু "পণ্যগুলি" এর আওতায় ওয়াহকমার্স সাবমেনাসটি গোপন করতে:

function remove_menus_shopmgr(){

// If the current user is a shop manager
if ( current_user_can('shop_manager') ) {

   //removes Products > Categories submenu 
    remove_submenu_page( 'edit.php?post_type=product','edit-tags.php?taxonomy=product_cat&post_type=product' );

   //removes Products > Tags submenu
    remove_submenu_page( 'edit.php?post_type=product','edit-tags.php?taxonomy=product_tag&post_type=product' ); 

    }
}

add_action( 'admin_menu', 'remove_menus_shopmgr', 999 );

0

যদি আপনার remove_menu_pageপক্ষে কাজ না করে (এটি আমার পক্ষে হয়নি) তবে মেনুটি সরিয়ে না দেওয়ার পরিবর্তে ওয়ার্ডপ্রেসকে পোস্টের ধরণের জন্য মেনুটি প্রদর্শন না করার কথা বলা হয়:

function wpse28782_hide_menu_items() {
    if( !current_user_can( 'administrator' ) ) {
        $post_type = get_post_type_object( 'your_post_type');
        if ($post_type) {
            $post_type->show_in_menu = false;
        }
    }
}
add_action( 'admin_menu', 'wpse28782_hide_menu_items', 99 );
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.