WordPress移动端首页重定向脚本失效问题求助
解决WordPress仅首页启用移动端重定向的问题
看起来你的核心问题是WordPress的条件判断没生效,导致所有页面都加载了重定向脚本。我来帮你一步步排查和修复:
1. 问题根源:条件判断逻辑过于严格
你用的is_front_page() && is_home()在大多数场景下都不会正确触发:
is_front_page()指向你设置的静态首页is_home()指向博客文章列表页
只有当你完全没设置静态首页(首页默认显示博客)时,这两个条件才会同时成立。如果设置了静态首页,这两个条件只会满足其中一个,要么导致脚本完全不加载,要么(更可能的是)因为WordPress初始化顺序问题,条件判断失效,脚本被全局加载。
2. 最稳妥的修复方案:直接判断请求路径
跳过WordPress条件标签的坑,直接用请求URI判断是否为首页,这个方法不受任何设置影响:
<?php // 仅根路径(首页)加载重定向脚本 if ( trim( $_SERVER['REQUEST_URI'], '/' ) === '' ) { echo '<script type="text/javascript" src="/js/redirection-mobile.js"></script><script type="text/javascript">// <![CDATA[ SA.redirection_mobile ({ mobile_url : "m.piccolo.co.il", }); // ]]></script>'; } ?>
这里用trim($_SERVER['REQUEST_URI'], '/') === ''精准判断当前访问的是站点根目录,不管你是静态首页还是博客首页,都能准确识别。
3. 确保代码放置位置正确
把这段代码放在主题header.php的<head>标签内部,且在wp_head();调用之后,比如:
<head> <meta charset="<?php bloginfo( 'charset' ); ?>"> <meta name="viewport" content="width=device-width, initial-scale=1"> <?php wp_head(); ?> <?php // 移动端重定向脚本(仅首页) if ( trim( $_SERVER['REQUEST_URI'], '/' ) === '' ) { echo '<script type="text/javascript" src="/js/redirection-mobile.js"></script><script type="text/javascript">// <![CDATA[ SA.redirection_mobile ({ mobile_url : "m.piccolo.co.il", }); // ]]></script>'; } ?> </head>
不要把代码放在header.php最顶部(WordPress核心逻辑还没加载的位置),否则$_SERVER变量可能无法正确获取值。
4. 排查缓存干扰
如果你用了缓存插件(比如WP Rocket、W3 Total Cache),一定要清空所有缓存再测试。缓存插件可能会把首页的脚本缓存到其他页面,导致全局加载重定向脚本。
额外小优化:解决HTTPS混合问题
虽然你说这不是当前核心问题,但可以顺便把脚本URL改成相对路径,自动适配HTTP/HTTPS:
src="/js/redirection-mobile.js"
这样不管你的主站是HTTP还是HTTPS,脚本都会用相同协议加载,避免浏览器的混合内容警告。
验证方法
修改后:
- 访问首页
http://piccolo.co.il,查看页面源代码,确认重定向脚本存在 - 访问其他页面(比如
http://piccolo.co.il/contact/),查看源代码,确认脚本不存在
这样就能确保只有首页会触发移动端重定向了。
内容的提问来源于stack exchange,提问作者Joni Dee
相关产品推荐
相关产品推荐

