最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

functions - Removing the main link to Jetpack from the menu

programmeradmin2浏览0评论

I need to remove the link to the Jetpack settings, but not the links to Omnisearch and Site Stats from the admin menu for everyone not having an administrator role:

For this, I came up with this code:

function remove_posts_menu() {
    if (!current_user_can('administrator')) {
        remove_submenu_page('admin.php?page=jetpack', 'admin.php?page=jetpack');
    }
}
add_action('admin_init', 'remove_posts_menu');

(Reference for the remove_submenu_page() function)

However, this doesn't work. I did check that the function is called and so by adding remove_submenu_page('tools.php', 'tools.php'); - when this is added to the function, just after the removal of the Jetpack settings link, the Tools link is removed, but the Broken Link Checker link (of a plugin I installed) is still visible.

What's the correct way to remove the Jetpack link?

I need to remove the link to the Jetpack settings, but not the links to Omnisearch and Site Stats from the admin menu for everyone not having an administrator role:

For this, I came up with this code:

function remove_posts_menu() {
    if (!current_user_can('administrator')) {
        remove_submenu_page('admin.php?page=jetpack', 'admin.php?page=jetpack');
    }
}
add_action('admin_init', 'remove_posts_menu');

(Reference for the remove_submenu_page() function)

However, this doesn't work. I did check that the function is called and so by adding remove_submenu_page('tools.php', 'tools.php'); - when this is added to the function, just after the removal of the Jetpack settings link, the Tools link is removed, but the Broken Link Checker link (of a plugin I installed) is still visible.

What's the correct way to remove the Jetpack link?

Share Improve this question asked Jun 23, 2013 at 7:53 user26607user26607
Add a comment  | 

4 Answers 4

Reset to default 0

Try this instead:

function remove_posts_menu() {
    if ( ! current_user_can( 'manage_options' ) ) 
        remove_submenu_page( 'jetpack', 'jetpack' );

}
add_action( 'admin_init', 'remove_posts_menu' );

where the menu slug and submenu slug are jetpack.

Jetpack's menu is added quite late, so you'll need to change the default priority to remove it a bit later (priority 999), like so:

function jetpackme_remove_jetpack_menu() {
        if ( ! current_user_can( 'manage_options' ) ) {
                remove_submenu_page( 'jetpack', 'jetpack' );
        }
}
add_action ( 'admin_menu', 'jetpackme_remove_jetpack_menu', 999 );
function wpdocs_remove_menus(){
        
      remove_menu_page( 'jetpack' );
}
add_action( 'admin_init', 'wpdocs_remove_menus' );
//paste in functions.php removes menu item for admin users

For the people that never want to see jetpack again. The code above unsets the admin menu item from administrators in wp-admin. "admin_init" is a way of calling the action before any other hook is triggered in wp-admin (call back only). Jetpack triggers super late which is why setting a priority of 1 or 11 or 99999 won't clear it.

*If you're like me, you're only using it for free woo commerce tax calculation and you never want to see jetpack again as well as your annoyed about how much resources it takes from your ultra light wordpress..

someone asked if this removes jetpack from taking up resources, no.

If you need further help nuking the resource hog (jetpack) I suggest disabling all the modules in jetpack. youtube video disabling jetpack modules

tony if your like me, and all you use is the zip code tax calculation and hate ads and ... jetpack paste this in your functions.php

/* Disable Ajax Call from WooCommerce on front page and posts // wc-ajax=get_refreshed_fragments fix*/
add_action( 'wp_enqueue_scripts', 'dequeue_woocommerce_cart_fragments', 11);
function dequeue_woocommerce_cart_fragments() {
if (is_front_page() || is_single() ) wp_dequeue_script('wc-cart-fragments');
}

// remove heart beat api widgets
add_action( 'init', 'stop_heartbeat', 1 );
function stop_heartbeat() {
wp_deregister_script('heartbeat');
}

// Analytics, if you need it, then view it the right way. Anywhere but wp dashboard.
    function jetpackcom_no_woo_analytics( $tools ) {
    $index = array_search( 'woocommerce-analytics/wp-woocommerce-analytics.php', $tools );
    if ( false !== $index ) {
        unset( $tools[ $index ] );
    }
    return $tools;
}
add_filter( 'jetpack_tools_to_include', 'jetpackcom_no_woo_analytics' );

// kill devicepx-jetpack.js good bye ads
function tj_dequeue_devicepx() {
 wp_dequeue_script( 'devicepx' );
}
add_action( 'wp_enqueue_scripts', 'tj_dequeue_devicepx' );
function remove_menus(){
if ( ! current_user_can( 'administrator' ) ) {
remove_menu_page( 'jetpack' );
}
}
add_action( 'admin_menu', 'remove_menus', 999 );

This seemed to work for me and allowed me to only give access to administrators. You can adapt it to hide any page from the Wordpress list here.

发布评论

评论列表(0)

  1. 暂无评论