如何调整WooCommerce实时搜索代码避免与Brizy编辑器冲突
问题根源
你修改代码时删除了原本包裹AJAX请求的fetch()自定义函数:原有搜索逻辑是触发输入事件(比如输入框键入、搜索按钮点击)时调用fetch()函数发起请求,修改后代码变成页面加载时直接发起无关键词的请求,且原有触发逻辑找不到fetch()函数,自然无法触发搜索。
你保留的Brizy编辑器判断逻辑本身是正确的,仅在编辑器加载时跳过输出搜索脚本,不会影响前台正常访问时的功能。
修复后的完整代码
替换你当前的ajax_fetch函数即可:
function ajax_fetch() { // 后台管理页直接跳过输出 if ( is_admin() ) { return; } // Brizy编辑模式下跳过输出脚本 if ( isset( $_GET[ Brizy_Editor::prefix('-edit-iframe') ] ) || isset( $_GET[ Brizy_Editor::prefix('-edit') ] ) ) { return; } ?> <script type="text/javascript"> // 此处修改为独特函数名,避免和JS原生fetch API冲突 function custom_product_search_fetch(){ const keyword = jQuery('#keyword').val(); // 增加非空判断,避免无意义的空请求 if (keyword.trim() === '') { jQuery('#datafetch').empty(); return; } jQuery.ajax({ url: '<?php echo admin_url('admin-ajax.php'); ?>', type: 'post', data: { action: 'data_fetch', keyword: keyword }, success: function(data) { jQuery('#datafetch').html( data ); } }); } </script> <?php }
配套调整说明
- 请将你页面中原有调用
fetch()的触发逻辑(比如输入框的onkeyup="fetch()"属性、jQuery绑定的keyup/input事件),同步修改为调用custom_product_search_fetch() - 可选优化点:你原有
data_fetch函数中存在两处不规范代码,可自行调整:- 把
<div class="row""">的多余双引号删除,改为<div class="row"> - 把弃用的
get_product( get_the_ID() )替换为WooCommerce当前推荐的wc_get_product( get_the_ID() )
- 把
内容的提问来源于stack exchange,提问作者SavPhill
相关产品推荐
相关产品推荐

