技术求助:如何在Twenty Sixteen主题的Customizer中移除WooCommerce板块?
如何移除WordPress自定义器中的WooCommerce板块?
嘿,我懂你那种明明搞定了其他自定义器项目移除,却唯独WooCommerce板块纹丝不动的郁闷!这事儿不怪你,WooCommerce的自定义器面板注册逻辑确实有点特殊,普通的移除手段可能拿它没办法。下面给你几个亲测有效的解决方案,你可以逐个试试:
方法一:通过customize_loaded_components过滤器直接阻止加载
这个过滤器是WordPress专门用来控制自定义器要加载哪些组件的,直接从源头阻止WooCommerce面板加载,效果最彻底:
add_filter( 'customize_loaded_components', 'remove_woocommerce_customizer_panel', 10, 1 ); function remove_woocommerce_customizer_panel( $components ) { // 定位并移除WooCommerce组件 $target_key = array_search( 'woocommerce', $components ); if ( false !== $target_key ) { unset( $components[$target_key] ); } return $components; }
方法二:在自定义器注册完成后移除面板
如果上面的方法没生效,可能是执行顺序的问题,那我们就等WooCommerce把面板注册完再动手:
add_action( 'customize_register', 'unregister_woocommerce_customizer_panel', 20 ); function unregister_woocommerce_customizer_panel( $wp_customize ) { // 先确认面板存在,再移除 if ( isset( $wp_customize->panels['woocommerce'] ) ) { $wp_customize->remove_panel( 'woocommerce' ); } }
这里把优先级设为20,就是为了确保我们的代码在WooCommerce注册面板之后运行,避免出现“找不到面板”的情况。
方法三:移除WooCommerce下的特定子面板
要是你不想整个移除WooCommerce面板,只想删掉里面的某几个子板块(比如产品设置、结账设置),可以用这个方法:
add_action( 'customize_register', 'remove_woocommerce_customizer_sections', 20 ); function remove_woocommerce_customizer_sections( $wp_customize ) { // 移除产品设置子面板 if ( isset( $wp_customize->sections['woocommerce_product_settings'] ) ) { $wp_customize->remove_section( 'woocommerce_product_settings' ); } // 移除结账设置子面板 if ( isset( $wp_customize->sections['woocommerce_checkout_settings'] ) ) { $wp_customize->remove_section( 'woocommerce_checkout_settings' ); } }
小提示
把这些代码添加到你当前主题的functions.php文件里,或者用专门的自定义代码插件(比如Code Snippets)来管理,这样不会因为主题更新丢失代码。添加完记得刷新自定义器页面看看效果,同时确认WooCommerce的核心功能没受影响哦!
内容的提问来源于stack exchange,提问作者Amit Jugran
相关产品推荐
相关产品推荐

