WooCommerce触发jQuery代码实现特定分类商品加购后弹窗的故障排查
问题原因
- 核心语法错误:PHP代码块内直接嵌套
<script>标签没有使用输出语句,PHP会将未被包裹的HTML内容识别为无效PHP语法,直接触发致命错误导致站点无法访问。 - 潜在执行异常:未做目标元素存在性判断,若页面不存在ID为
pop-up的元素,JS逻辑会无效执行,弹窗无法正常触发。
修复方案
将原有代码替换为以下内容即可:
add_action( 'woocommerce_before_checkout_form', 'check_category_in_cart' ); function check_category_in_cart() { $cat_in_cart = false; foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { // 此处将test替换为你需要匹配的产品分类别名 if ( has_term( 'test', 'product_cat', $cart_item['product_id'] ) ) { $cat_in_cart = true; break; } } if ( $cat_in_cart ) { // 闭合PHP标签后输出JS代码,避免语法错误 ?> <script> jQuery(document).ready(function($) { // 先判断目标按钮是否存在,避免无效执行 if ($('#pop-up').length) { $('#pop-up').trigger('click'); } }); </script> <?php } }
使用说明
- 替换代码中
test参数为你实际需要判断的产品分类别名 - 确认站点内触发弹窗的按钮ID为
pop-up,若ID不同需同步修改JS代码中的选择器
内容的提问来源于stack exchange,提问作者bytris
相关产品推荐
相关产品推荐

