如何将Goodlayers Infinite主题商店页查看详情按钮改为添加到报价按钮
替换Goodlayers Infinite主题查看详情按钮为ELEX报价按钮的调整方案
你之前的代码不生效的核心原因是:add_filter的第一个参数需要是WordPress核心、主题或插件预先注册的过滤器钩子名称,你填入的gldr-core-product-view-detail是按钮的CSS类名,不存在对应的过滤器,所以代码不会触发执行。
下面提供两种可行的实现方案:
方案1:前端JS替换(无需查找主题钩子,生效最快)
将以下JS代码添加到主题后台「自定义-自定义CSS/JS」的自定义JS输入框中,或者子主题footer.php文件的</body>标签前即可:
document.addEventListener('DOMContentLoaded', function() { // 匹配所有查看详情按钮 document.querySelectorAll('.gdlr-core-product-view-detail').forEach(function(oldBtn) { // 可替换为ELEX插件原生按钮的HTML结构,保持样式和功能正常 oldBtn.outerHTML = '<button class="elex-add-to-quote gdlr-core-button">添加到报价</button>'; }); });
如果需要保留ELEX插件原生的报价功能,你可以先在测试页面输出ELEX的[add_to_quote]短代码,复制生成的按钮HTML替换上面的按钮代码即可。
方案2:PHP钩子替换(更符合WordPress开发规范)
将以下代码添加到子主题的functions.php文件中:
add_filter('gdlr_core_woocommerce_product_button', 'replace_detail_btn_to_quote', 20, 2); function replace_detail_btn_to_quote($origin_btn, $product) { // 调用ELEX插件原生的添加到报价按钮生成函数 if (function_exists('elex_quote_get_add_to_quote_button')) { return elex_quote_get_add_to_quote_button($product->get_id()); } // fallback方案,插件未激活时返回原按钮 return $origin_btn; }
如果上述钩子不生效,你可以直接找到主题的商品列表模板文件(通常路径为主题目录/woocommerce/loop/product-button.php或主题目录/templates/woocommerce/item.php),手动将原查看详情按钮的代码替换为ELEX插件的按钮代码即可。
内容的提问来源于stack exchange,提问作者Andrew Wright
相关产品推荐
相关产品推荐

