WooCommerce 只保留产品模块的处理办法

WooCommerce是一款非常棒的电子商城插件,但是有时候客户仅仅需要产品展示,并不需要这个插件的其他功能,比如支付 优惠券等等,所以很有必要精简掉这些功能,只保留产品模块。

这样不仅仅可以提高处理速度,也可以让后台响应变得更快。

(仅仅适配漫步白月光子主题)现在附上处理代码

/**
 * WooCommerce 精简配置
 */

// 1. 基础禁用
add_filter( 'woocommerce_coupons_enabled', '__return_false' );
add_filter( 'woocommerce_enable_setup_wizard', '__return_false' );

// 2. 确保管理员有所有必要的权限
add_action( 'init', 'at8_fix_admin_capabilities' );
function at8_fix_admin_capabilities() {
    if ( current_user_can( 'administrator' ) ) {
        $admin_role = get_role( 'administrator' );
        if ( $admin_role ) {
            // WooCommerce 核心权限
            $admin_role->add_cap( 'manage_woocommerce' );
            $admin_role->add_cap( 'view_admin_dashboard' );
            
            // 产品相关权限
            $admin_role->add_cap( 'edit_products' );
            $admin_role->add_cap( 'read_products' );
            $admin_role->add_cap( 'delete_products' );
            $admin_role->add_cap( 'edit_others_products' );
            $admin_role->add_cap( 'delete_others_products' );
            $admin_role->add_cap( 'publish_products' );
            $admin_role->add_cap( 'edit_published_products' );
            $admin_role->add_cap( 'delete_published_products' );
            
            // 分类权限
            $admin_role->add_cap( 'manage_product_terms' );
            $admin_role->add_cap( 'edit_product_terms' );
            $admin_role->add_cap( 'delete_product_terms' );
            $admin_role->add_cap( 'assign_product_terms' );
            
            // 添加可能缺失的权限
            $admin_role->add_cap( 'edit_shop_orders' );
            $admin_role->add_cap( 'read_shop_orders' );
            $admin_role->add_cap( 'delete_shop_orders' );
            $admin_role->add_cap( 'edit_shop_order_notes' );
            $admin_role->add_cap( 'edit_others_shop_orders' );
        }
    }
}

// 3. 安全的菜单清理 - 只隐藏,不删除
add_action( 'admin_menu', 'at8_safe_menu_cleanup', 9999 );
function at8_safe_menu_cleanup() {
    global $submenu;
    
    // 移除 WooCommerce 主菜单
    remove_menu_page( 'woocommerce' );
    
    // 清理产品菜单的子菜单
    if ( isset( $submenu['edit.php?post_type=product'] ) ) {
        foreach ( $submenu['edit.php?post_type=product'] as $key => $item ) {
            if ( isset( $item[2] ) ) {
                $remove_slugs = array(
                    'wc-admin',
                    'wc-reports',
                    'wc-settings',
                    'wc-status',
                    'wc-addons',
                    'wc-orders',
                    'shop_coupon',
                    'marketing',
                    'payments'
                );
                
                foreach ( $remove_slugs as $slug ) {
                    if ( strpos( $item[2], $slug ) !== false ) {
                        unset( $submenu['edit.php?post_type=product'][$key] );
                        break;
                    }
                }
            }
        }
    }
    
    // 移除独立支付菜单
    remove_menu_page( 'wc-admin&path=/payments' );
}

// 4. 重定向不需要的页面
add_action( 'admin_init', 'at8_safe_redirects' );
function at8_safe_redirects() {
    if ( isset( $_GET['page'] ) ) {
        $redirect_pages = array(
            'wc-orders',
            'wc-reports',
            'wc-settings',
            'wc-status',
            'wc-addons',
            'wc-admin'
        );
        
        $current_page = sanitize_text_field( $_GET['page'] );
        
        foreach ( $redirect_pages as $page ) {
            if ( $current_page === $page || strpos( $current_page, $page ) !== false ) {
                wp_redirect( admin_url( 'edit.php?post_type=product' ) );
                exit;
            }
        }
    }
}

// 5. CSS 隐藏不需要的菜单项
add_action( 'admin_head', 'at8_hide_unwanted_menus' );
function at8_hide_unwanted_menus() {
    echo '<style type="text/css">
        /* 隐藏 WooCommerce 主菜单 */
        #toplevel_page_woocommerce {
            display: none !important;
        }
        
        /* 隐藏 WooCommerce 主菜单中不需要的子项 */
        #toplevel_page_woocommerce .wp-submenu li a[href*="wc-orders"],
        #toplevel_page_woocommerce .wp-submenu li a[href*="shop_coupon"],
        #toplevel_page_woocommerce .wp-submenu li a[href*="wc-reports"],
        #toplevel_page_woocommerce .wp-submenu li a[href*="wc-settings"],
        #toplevel_page_woocommerce .wp-submenu li a[href*="wc-status"],
        #toplevel_page_woocommerce .wp-submenu li a[href*="wc-addons"],
        #toplevel_page_woocommerce .wp-submenu li a[href*="wc-admin"],
        #toplevel_page_woocommerce .wp-submenu li a[href*="marketing"],
        #toplevel_page_woocommerce .wp-submenu li a[href*="payments"],
        
        /* 隐藏独立支付菜单 */
        #toplevel_page_wc-admin-path-payments,
        li[class*="PAYMENTS_MENU_ITEM"],
        
        /* 隐藏设置提示 */
        .woocommerce-layout__activity-panel,
        .woocommerce-task-dashboard__container,
        .woocommerce-setup-guide,
        .woocommerce-message {
            display: none !important;
        }
        
        /* 重命名产品主菜单 */
        #menu-posts-product .wp-menu-name {
            font-size: 0 !important;
        }
        #menu-posts-product .wp-menu-name:after {
            content: "产品" !important;
            font-size: 14px !important;
        }
    </style>';
}

// 6. JavaScript 辅助隐藏
add_action( 'admin_footer', 'at8_js_cleanup' );
function at8_js_cleanup() {
    ?>
    <script type="text/javascript">
    jQuery(document).ready(function($) {
        // 隐藏不需要的菜单项
        function hideUnwantedMenus() {
            $('a[href*="wc-orders"], a[href*="shop_coupon"], a[href*="wc-reports"], a[href*="wc-settings"], a[href*="wc-status"], a[href*="wc-addons"], a[href*="wc-admin"], a[href*="marketing"], a[href*="payments"]').closest('li').hide();
            $('#toplevel_page_woocommerce').hide();
        }
        
        hideUnwantedMenus();
        setInterval(hideUnwantedMenus, 1000);
    });
    </script>
    <?php
}

// 7. 移除仪表盘小工具
add_action( 'wp_dashboard_setup', 'at8_remove_dashboard_widgets' );
function at8_remove_dashboard_widgets() {
    remove_meta_box( 'woocommerce_dashboard_status', 'dashboard', 'normal' );
}

// 8. 禁用前台功能
add_action( 'template_redirect', 'at8_disable_frontend' );
function at8_disable_frontend() {
    if ( is_cart() || is_checkout() ) {
        wp_redirect( home_url() );
        exit;
    }
}

// 9. 禁用任务列表
update_option( 'woocommerce_task_list_hidden', 'yes' );
update_option( 'woocommerce_onboarding_opt_in', 'no' );

 

© 版权声明
THE END
喜欢就支持一下吧
点赞11赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容