WooCommerce商品附加项条件逻辑在商品页正常、快速预览页失效求助
WordPress快速预览弹窗商品附加项条件逻辑失效解决方案
问题核心原因:Woo Quick View弹窗为AJAX异步加载内容,Advanced Product Fields插件的相关脚本、以及依赖的datepicker、SumoSelect、colorpicker等组件脚本默认仅在单个商品详情页入队,全局页面未加载对应脚本,导致弹窗内无法触发附加字段的条件逻辑判断。
操作步骤
1. 全局入队所需脚本与样式
将以下代码添加到当前激活主题的functions.php文件末尾,或通过Code Snippets插件添加自定义代码(避免主题更新后代码丢失):
add_action( 'wp_enqueue_scripts', 'custom_load_product_fields_assets_globally', 999 ); function custom_load_product_fields_assets_globally() { // 加载Advanced Product Fields核心资源 if ( class_exists( 'WAPF_Frontend' ) ) { wp_enqueue_script( 'wapf-frontend' ); wp_enqueue_style( 'wapf-frontend' ); // 加载依赖组件资源 wp_enqueue_script( 'jquery-sumoselect' ); wp_enqueue_style( 'sumoselect' ); wp_enqueue_script( 'jquery-ui-datepicker' ); wp_enqueue_style( 'jquery-ui-datepicker' ); wp_enqueue_script( 'wp-color-picker' ); wp_enqueue_style( 'wp-color-picker' ); } // 加载WooCommerce变体处理脚本(适配可变商品) wp_enqueue_script( 'wc-add-to-cart-variation' ); }
2. 适配AJAX加载完成后的初始化逻辑
脚本全局加载后,还需要在快速预览弹窗内容插入完成后主动触发附加字段的初始化,继续添加以下代码:
add_action( 'wp_footer', 'custom_reinit_product_fields_on_quickview' ); function custom_reinit_product_fields_on_quickview() { ?> <script> jQuery(document).on('qv_loader_stop', function() { if (typeof WAPF !== 'undefined') { // 初始化弹窗内的附加字段 WAPF.init(jQuery('.quick-view-modal')); // 触发条件逻辑重新计算 jQuery(document).trigger('wapf/init_fields'); } }); </script> <?php }
3. 缓存清理与测试
操作完成后清空WordPress站点缓存、浏览器缓存,打开包含快速预览按钮的商品列表页,测试弹窗内附加字段的条件逻辑是否正常触发。
如果出现样式异常,可在主题自定义CSS面板中补充对应组件的样式适配即可。
内容的提问来源于stack exchange,提问作者Hussain Shah
相关产品推荐
相关产品推荐

