Home / Admin / Shop Manager – View Only.js
Duplicate Snippet

Embed Snippet on Your Site

Shop Manager – View Only.js

Creates a Shop Manager - View Only role that can view the backend, but cannot edit anything

Code Preview
js
add_action('admin_menu', function () {
    $user = wp_get_current_user();
    if (!in_array('shop_manager_-_view_only', (array) $user->roles)) {
        return;
    }
    global $menu, $submenu;
    // Top-level menu whitelist
    $allowed_top = [
        'index.php',                   // Dashboard
        'woocommerce',                // WooCommerce
        'users.php',                  // Users
        'woocommerce-marketing',      // Marketing
    ];
    foreach ($menu as $key => $item) {
        if (!in_array($item[2], $allowed_top)) {
            remove_menu_page($item[2]);
        }
    }
    // WooCommerce: Keep only "Orders"
    if (isset($submenu['woocommerce'])) {
        foreach ($submenu['woocommerce'] as $key => $item) {
            if ($item[2] !== 'edit.php?post_type=shop_order') {
                unset($submenu['woocommerce'][$key]);
            }
        }
    }
    // Marketing: Keep only "Coupons"
    if (isset($submenu['woocommerce-marketing'])) {
        foreach ($submenu['woocommerce-marketing'] as $key => $item) {
            if ($item[2] !== 'edit.php?post_type=shop_coupon') {
                unset($submenu['woocommerce-marketing'][$key]);
            }
        }
    }
}, 999);
// Inject admin CSS to hide buttons and fields for View-Only Shop Managers
add_action('admin_head', function () {
    $user = wp_get_current_user();
    if (!in_array('shop_manager_-_view_only', (array) $user->roles)) {
        return;
    }
    echo '<style>
        /* Coupons page: hide Add New, Smart Coupon Settings, and Duplicate */
        body.post-type-shop_coupon a.page-title-action,
        body.post-type-shop_coupon .smart-coupon-settings-button,
        body.post-type-shop_coupon span.duplicate {
            display: none !important;
        }
        /* Orders page: hide Add New, Custom Fields, Order Files, and Downloads */
        body.post-type-shop_order a.page-title-action,
        body.post-type-shop_order div#postcustom,
        body.post-type-shop_order div#wooccm-order-files,
        body.post-type-shop_order div#woocommerce-order-downloads {
            display: none !important;
        }
        /* Admin bar: hide Stack Cache purge button */
        li#wp-admin-bar-stack-cache-purge-cache {
            display: none !important;
        }
    </style>';
});
// Remove specific admin bar items for View-Only Shop Managers
add_action('admin_bar_menu', function ($wp_admin_bar) {
    $user = wp_get_current_user();
    if (!in_array('shop_manager_-_view_only', (array) $user->roles)) {
        return;
    }
    $wp_admin_bar->remove_node('my-sites');        // My Sites
    $wp_admin_bar->remove_node('comments');        // Edit Comments
    $wp_admin_bar->remove_node('new-content');     // + New
    // Note: Stack Cache purge handled via CSS
}, 999);

Comments

Add a Comment