প্লাগইনগুলি sertedোকানো অ্যাডমিন মেনু পৃষ্ঠাগুলি কীভাবে সরাবেন?


39

আমি নিম্নলিখিত কোড পেয়েছি, যা প্রশাসনিক অঞ্চলে ব্যবহার করা হচ্ছে না এমন অনেকগুলি জিনিস পরিষ্কার করে:

add_action( 'admin_menu', 'my_remove_menu_pages' );

function my_remove_menu_pages() {
  remove_menu_page( 'edit.php' );                   //Posts
  remove_menu_page( 'upload.php' );                 //Media
  remove_menu_page( 'edit-comments.php' );          //Comments
  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

};

তবে, দুটি মেনু আইটেম রয়েছে যা প্লাগইনগুলি থেকে .োকানো হয়েছে।

আমি যখন প্রতিটি মেনু আইটেমের উপরে ঘুরে দেখি তখন লিঙ্কগুলি হ'ল:

/wp-admin/edit.php?post_type=acf
/wp-admin/admin.php?page=wpcf7

এই মেনু পৃষ্ঠাগুলিও লুকানোর কোনও উপায় আছে?


জিজ্ঞাসা করার জন্য বোকামি হতে পারে, তবে কেন আপনি প্রশ্নে প্লাগইনগুলি নিষ্ক্রিয় করতে পারলে প্রশাসক মেনু হ্যাক করবেন?
eyoung100

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

আপনি যদি কোডিংয়ের মাধ্যমে সমাধানটি ব্যবহার করেন, প্লাগইনটি 'অ্যাডমিনিমাইজ' এর মতো প্লাগইন প্রসঙ্গে সহায়ক is প্লাগইনটির সেটিংস যদি আপনার প্রয়োজন না হয় তবে কাস্টম কোডের মাধ্যমে স্লাগগুলি সেখানে স্লাগগুলি সরিয়ে ফেলতে হবে।
7:42

উত্তর:


61

আপনাকে ডান হুকগুলি ব্যবহার করতে হবে (যা সর্বদা ইউআরএল / স্লাগের সমান হয় না), এবং পরে চালিত হুক ব্যবহার করতে আঘাত লাগে না (যেমন, admin_init):

add_action( 'admin_init', 'wpse_136058_remove_menu_pages' );

function wpse_136058_remove_menu_pages() {

    remove_menu_page( 'edit.php?post_type=acf' );
    remove_menu_page( 'wpcf7' );
}

আপনি ডিবাগ করতে নিম্নলিখিত ব্যবহার করতে পারেন:

add_action( 'admin_init', 'wpse_136058_debug_admin_menu' );

function wpse_136058_debug_admin_menu() {

    echo '<pre>' . print_r( $GLOBALS[ 'menu' ], TRUE) . '</pre>';
}

এটি যোগাযোগের ফর্ম 7 প্লাগইন মেনু পৃষ্ঠাটির জন্য (আমার সেটআপের জন্য) নিম্নলিখিতটি দেয়:

[27] => Array
        (
            [0] => Formular
            [1] => wpcf7_read_contact_forms
            [2] => wpcf7
            [3] => Contact Form 7
            [4] => menu-top menu-icon-generic toplevel_page_wpcf7 menu-top-last
            [5] => toplevel_page_wpcf7
            [6] => none
        )

কী দিয়ে অ্যারের উপাদান 2আপনি যা খুঁজছেন হয়: wpcf7


5
কীভাবে মেনুটি ডাম্প করবেন এবং কী কী ব্যবহার করবেন তা দেখানো remove_menu_page()একটি বিশাল সহায়তা ছিল - আমাকে কেবল মাছ তুলে দেওয়ার পরিবর্তে কীভাবে মাছ ধরতে হবে তা শিখিয়েছিলেন!
ম্যাথু ক্লার্ক

এসিফের জন্য ডক্সগুলি আরও ভালভাবে দেখতে পাওয়া যায়
হাইটাটোডস্ট্রাক্ট

ডিবাগ কোডটি বেশ সহায়ক। ভাগ করে নেওয়ার জন্য একটি টন ধন্যবাদ!
ডেভনার

16
    // PLUGINS THAT ADD AS DASHBOARD SUBMENU
    // IF THIS IS THE URL BELOW - THE PAGE VARIABLE IS WHAT I NEED ( SO WHATEVER COMES AFTER PAGE= )
    // http://example.com/wp-admin/index.php?page=iconize-plugin-update-notifier
    remove_submenu_page( 'index.php', 'iconize-plugin-update-notifier' );

    // OR FOR EXAMPLE WOOCOMMERCE DASHBOARD SUBMENU
    remove_submenu_page( 'index.php', 'wc-about' ); //WOO
    remove_submenu_page( 'index.php', 'wc-credits' ); //WOO
    remove_submenu_page( 'index.php', 'wc-translators' ); //WOO

    // CUSTOM POST TYPE TOP LEVELS
    remove_menu_page( 'edit.php?post_type={$POST_TYPE}' ); //LOOK FOR WHAT COMES AFTER POST TYPE IN THE URL
    remove_menu_page( 'edit.php?post_type=testimonials-widget' ); //TESTIMONIALS WIDGET
    remove_menu_page( 'edit.php?post_type=product' ); //WOOCOMMERCE

    // CUSTOM POST TYPE SUBMENU
     remove_submenu_page( 'edit.php?post_type={$POST_TYPE}', '{$SUBMENU_URL_VARIABLE}' ); //EXAMPLE FORMAT
     // SO IF BELOW IS THE URL
     // http://example.com/wp-admin/edit.php?post_type=testimonials-widget&page=testimonialswidget_settings
     // YOU NEED TO SEE WHATS AFTER PAGE
     remove_submenu_page( 'edit.php?post_type=testimonials-widget', 'testimonialswidget_settings' ); //TESTIMONIALS WIDGET

    // OTHER EXAMPLES
    remove_menu_page( 'revslider' ); // REVSLIDER
    remove_menu_page( 'woocommerce' ); // WOOCOMMERCE
    remove_menu_page( 'order-post-types-shop_order' ); // WOOCOMMERCE
    remove_menu_page( 'order-post-types-shop_coupons' ); // WOOCOMMERCE
    remove_menu_page( 'shortcodes-ultimate' ); // SHORTCODES ULTIMATE
    remove_menu_page( 'wp-admin-microblog/wp-admin-microblog.php' ); // ADMIN MICROBLOG
    remove_menu_page( 'snippets' ); //CODE SNIPPETS
    remove_menu_page( 'gf_edit_forms' ); // GRAVITY FORMS
        remove_submenu_page( 'gf_edit_forms', 'gf_settings' ); // GRAVITY FORMS
        remove_submenu_page( 'gf_edit_forms', 'gf_export' ); // GRAVITY FORMS
        remove_submenu_page( 'gf_edit_forms', 'gf_update' ); // GRAVITY FORMS
        remove_submenu_page( 'gf_edit_forms', 'gf_addons' ); // GRAVITY FORMS
        remove_submenu_page( 'gf_edit_forms', 'gf_help' ); // GRAVITY FORMS

        remove_submenu_page( 'cleverness-to-do-list', 'cleverness-to-do-list-settings' ); //Cleverness TODO

আপনি যা প্রয়োজন তা সমস্ত তথ্য পেতে আপনি এই সমস্ত ডিবাগ করতে পারেন:

if (!function_exists('debug_admin_menus')):
function debug_admin_menus() {
if ( !is_admin())
        return;
    global $submenu, $menu, $pagenow;
    if ( current_user_can('manage_options') ) { // ONLY DO THIS FOR ADMIN
        if( $pagenow == 'index.php' ) {  // PRINTS ON DASHBOARD
            echo '<pre>'; print_r( $menu ); echo '</pre>'; // TOP LEVEL MENUS
            echo '<pre>'; print_r( $submenu ); echo '</pre>'; // SUBMENUS
        }
    }
}
add_action( 'admin_notices', 'debug_admin_menus' );
endif;

কীগুলি আপনাকে অ্যারে মানগুলি দেবে যা আপনাকে ওয়ার্ডপ্রেস গ্লোবালগুলি দিয়ে এই সমস্ত করতে দেয় (যদিও প্রস্তাবিত নয়)

function remove_submenus_all_please() {
if ( !is_admin())
        return;
  global $submenu;
    unset($submenu['index.php'][10]); // Removes Updates
  //Posts menu
 // unset($submenu['edit.php'][5]); // Leads to listing of available posts to edit
 // unset($submenu['edit.php'][10]); // Add new post
 // unset($submenu['edit.php'][15]); // Remove categories
 // unset($submenu['edit.php'][16]); // Removes Post Tags
}
add_action('admin_menu', 'remove_submenus_all_please', 999);

এবং নির্দিষ্ট ব্যবহারকারীর জন্য অপসারণ করতে কেবল সামর্থ্য ব্যতীত একই কাজ করুন:

function remove_by_caps_admin_menu() {
if ( !is_admin())
        return;
    if ( !current_user_can('manage_options') ) {
        remove_menu_page( 'revslider' ); // REVSLIDER
    } elseif ( !current_user_can('edit_posts') ) {
        remove_menu_page( 'woocommerce' ); // WOO
    } else {
    }
}
add_action('admin_menu', 'remove_by_caps_admin_menu', 999);

এবং এটি সমস্ত একসাথে টাই করার জন্য কেন আমাদের কোড ছোট করা যায় না? আপনি 50 বার বার লেখার লিখিত লিঙ্ক এড়ানোর জন্য ব্যবহার করতে পারেন। এটি সরঞ্জামদণ্ড নোডগুলির সাথেও কাজ করে:

if ( !function_exists( 'remove_admin_menupages_in_array' ) ) {
function remove_admin_menupages_in_array() {
    if ( !is_admin())
        return;
          $admin_menus = array(
                                'revslider',
                                'woocommerce',
                                'shortcodes-ultimate',
          );

    foreach ( $admin_menus as $menu_page ) {
        if ( !current_user_can('manage_options') ) {
            remove_menu_page( $menu_page );
        }
    } // foreach
 } // function
add_action('admin_menu', 'remove_admin_menupages_in_array', 9999);
} // exists

15

আপনার সম্ভবত অ্যাডঅ্যাকশন অগ্রাধিকারটি একটি উচ্চ সংখ্যায় সেট করতে হবে এবং সেই দুটি নতুন লিঙ্ককে বিশেষত পছন্দ করতে হবে:

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

function my_remove_menu_pages() {
  remove_menu_page( 'edit.php' );                   //Posts
  remove_menu_page( 'upload.php' );                 //Media
  remove_menu_page( 'edit-comments.php' );          //Comments
  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
  remove_menu_page( 'edit.php?post_type=acf' );
  remove_menu_page( 'wpcf7' );
};

উন্নত কাস্টম ক্ষেত্রগুলি এখানে তাদের মেনুটির জন্য এটি কীভাবে করতে হয় সে সম্পর্কে একটি সহায়তা দস্তাবেজ সরবরাহ করে:

http://www.advancedcustomfields.com/resources/how-to/how-to-hide-acf-menu-from-clients/

যোগাযোগের ফর্ম 7 এর মেনুটির দৃশ্যমানতা সীমাবদ্ধ করার নিজস্ব উপায় রয়েছে:

http://contactform7.com/restricting-access-to-the-administration-panel/


যোগাযোগের লুকোচুরি remove_menu_page( 'wpcf7' );
আবেল মেলকুইয়েডস কালেজো

8

হালনাগাদ

আমি একটি আরও দৃ ust ় ফাংশন সহ একটি কোড স্নিপেট তৈরি করেছি যা প্রধান মেনু এবং সাব-মেনু আইটেম উভয়ই নিয়ে কাজ করে।

আসল উত্তর

আপনি যে মেনুগুলি সরাতে চান তা উল্লেখ করার পরিবর্তে আপনি যে মেনুগুলি রাখতে চান তা উল্লেখ করুন :)

add_action('admin_init', 'nwcm_admin_init');

function nwcm_admin_init()
{   
    // Remove unnecessary menus 
    $menus_to_stay = array(
        // Client manager
        'nwcm',

        // Dashboard
        'index.php',

        // Users
        'users.php'
    );      
    foreach ($GLOBALS['menu'] as $key => $value) {          
        if (!in_array($value[2], $menus_to_stay)) remove_menu_page($value[2]);
    }   

} 

আপনি নতুন প্লাগইন যুক্ত করার সময় আপনাকে এইভাবে প্লাগইন নামগুলি অনুসন্ধান করতে হবে না এবং কোডটি সংশোধন করতে হবে না ..


ঠিক আমি খুঁজছেন ছিল কি! এছাড়াও আপনার কোড স্নিপেট একটি দুর্দান্ত এক মত লাগে! আপনার সমাধান যোগ করার জন্য একটি টন ধন্যবাদ। এটা প্রশংসা করি!
ডেভনার

5

আপনাকে সঠিক $ মেনু_স্লাগ খুঁজে পাওয়া দরকার। নিম্নলিখিত কোডটি আমার পক্ষে কাজ করেছে:

add_action( 'admin_init', 'remove_menus' );
function remove_menus(){
  remove_menu_page( 'wpcf7' );
}

4

অবশ্যই আপনি মুছে ফেলতে চান কেবল আইটেম নির্দিষ্ট করতে পারেন। নীচের কোডটিতে একবার দেখুন:

/wordpress/wp-content/plugins/your_plugin/your_plugin.php :


add_action('admin_init', 'nwcm_admin_init');

function nwcm_admin_init()
{   
// Remove unnecessary menus 
$menus_to_remove = array(
    // menu items you want to remove
    'menu_item_1',
    'menu_item_2',
    .
    .
    'menu_item_n'
);     

// To avoid warning message, check whether 'menu' is set AND is an array
if(isset($GLOBALS['menu']) && is_array($GLOBALS['menu'])) {
   foreach ($GLOBALS['menu'] as $key => $value) {  
     //Remove the '!' in the 'if' condition.        
     if (in_array($value[2], $menus_to_remove)) remove_menu_page($value[2]);
   }
}   

} 

এটি কেবল নামডিয়াওয়েবের পদ্ধতির নেতিবাচক। ধন্যবাদ @ নুনমিডিয়াউব এটা ভাল কাজ করে।

PS: 'menu_item_1 / n' -> মেনু আইটেমের উপরে মাউস নির্দেশ করুন এবং লিঙ্কটিতে প্রদর্শিত মেনু আইটেমটির সঠিক পৃষ্ঠাটি আনুন।


0

এই কোড স্নিপেট ব্যবহার করুন

function your_custom_name() {    
    remove_menu_page('vc-general'); //the slug as seen wp-admin.php?page=vc-general  
}    
add_action( 'admin_init', 'your_custom_name' );

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