使用钩子向WooCommerce我的账户页面添加超链接的报错解决
报错原因
syntax error, the unexpected identifier "https", expecting ")"是PHP字符串引号嵌套冲突导致的:你用双引号包裹了翻译函数内的整段文本,文本内部HTML的href属性又直接使用未转义的双引号,PHP会把href=后的第一个双引号判定为字符串结束边界,后续的链接内容就会被识别为非法语法。
修复方法
调整引号使用规则即可,两种写法都可正常运行:
- 简便写法:HTML属性改用单引号,和外层包裹字符串的双引号避开冲突,后续维护更方便
- 转义写法:如果要在HTML属性里保留双引号,在内部双引号前加反斜杠
\转义,告知PHP该引号是字符串内容的一部分,不是结束标记
可直接使用的修复后代码
add_action( 'woocommerce_account_content', 'action_woocommerce_account_content' ); function action_woocommerce_account_content() { global $current_user; // 调用当前登录用户的WP_User对象 // 推荐写法:属性用单引号,无需转义 echo '<p>' . __("<a href='/wholesale-application/'>申请批发账户</a>", "woocommerce") . '</p>'; // 双引号转义写法,运行效果和上方完全一致 // echo '<p>' . __("<a href=\"/wholesale-application/\">申请批发账户</a>", "woocommerce") . '</p>'; }
使用时请将代码中的
/wholesale-application/替换为你站点自己的目标页面路径即可。
内容的提问来源于stack exchange,提问作者Acephalia
相关产品推荐
相关产品推荐

