Hostinger环境下wpcf7_add_form_tag失效问题求助
解决Contact Form 7 [current_url]标签在Hostinger环境不渲染的问题
以下是针对你遇到的问题的排查和修复方案:
1. 修正get_home_url的调用错误
你的代码中get_home_url( $wp->request, $scheme = 'relative' )用法错误,get_home_url的第一个参数应为博客ID(可选,默认当前站点),而非请求路径。错误的参数会导致返回空值或无效URL,进而使标签输出异常。
替换为正确的路径获取方式,比如直接获取当前请求的相对路径:
$url = $wp->request;
2. 移除HTML实体转义
你返回的HTML使用了实体转义(<、"),Contact Form 7的标签处理器会直接渲染返回内容,转义后的代码会被当作文本输出,而非生成隐藏输入框。直接返回原生HTML即可。
3. 修正后的完整代码
add_action( 'wpcf7_init', 'wpcf7_add_form_tag_current_url', 100 ); // 增加优先级确保晚于CF7初始化 function wpcf7_add_form_tag_current_url() { wpcf7_add_form_tag( 'current_url', 'wpcf7_current_url_form_tag_handler', array( 'name-attr' => true ) ); } function wpcf7_current_url_form_tag_handler( $tag ) { global $wp; $url = $wp->request; // 直接获取当前请求的相对路径 $urlenc = str_replace('/', '', $url); return '<input type="hidden" name="origin" value="'. urlencode($urlenc) .'" />'; }
4. 额外排查步骤
- 开启WordPress调试模式:在
wp-config.php中添加define('WP_DEBUG', true);,查看是否有隐藏的错误信息(Hostinger可能默认关闭了错误输出)。 - 清理Hostinger服务器级缓存:即使清理了插件缓存,Hostinger自带的服务器缓存(如LiteSpeed Cache)可能仍有残留,建议在Hostinger面板中清理服务器缓存。
- 重新保存CF7表单:确保标签被表单系统正确解析。
内容的提问来源于stack exchange,提问作者Alex Shytyk
相关产品推荐
相关产品推荐

