WordPress中为锚点链接追加URL参数的问题求助
解决方案
问题核心是URL结构规范和参数编码问题:
- 锚点(
#contact)必须放在查询参数之后,否则参数会被浏览器识别为锚点的一部分,服务器无法获取 - 产品标题含特殊字符时未编码,会导致参数截断或解析错误
修改后的代码如下:
function replace_default_button(){ // 编码产品标题,确保特殊字符符合URL规范 $encoded_title = rawurlencode(get_the_title()); return '<form> <button formaction="/?name=' . esc_attr($encoded_title) . '#contact">Contact</button> </form>'; }
关键说明:
rawurlencode():将标题中的空格、中文、特殊符号转换为URL安全编码,避免参数传递失败esc_attr():转义HTML属性内容,防止XSS漏洞和HTML解析错误- 正确的URL结构
/?name=编码后的标题#contact,浏览器会同时识别查询参数和锚点,实现跳转+传参的需求
如果是替换WooCommerce的加入购物车按钮,需要添加钩子将函数绑定到对应动作:
add_filter('woocommerce_loop_add_to_cart_link', 'replace_default_button');
内容的提问来源于stack exchange,提问作者Sverrir Birgisson
相关产品推荐
相关产品推荐

