如何在WordPress站点中禁用浏览器阅读视图及实现阅读视图点击跳转指定页面
嘿,这个问题我刚好在项目里处理过几次,给你分两个部分来解决:先禁用浏览器触发阅读视图的能力,再处理万一用户还是打开了阅读视图的重定向需求,都是WordPress里能实现的方案👇
一、禁用浏览器的阅读视图功能
浏览器会自动识别页面内容(比如长文章)触发阅读视图,核心是通过页面的meta标签和内容结构判断。我们可以通过添加特定meta标签来阻止浏览器启用这个功能,推荐用代码片段插件(比如Code Snippets)来添加,避免直接修改主题文件导致更新丢失代码。
添加以下PHP代码到你的代码片段中(或者主题的functions.php文件末尾):
function disable_browser_reading_view() { // 告诉浏览器不要启用阅读视图的核心meta标签 echo '<meta property="og:type" content="website">'; // 阻止Safari识别为文章类内容 echo '<meta name="google" content="notranslate">'; // 干扰Chrome的阅读视图触发逻辑 echo '<meta name="viewport" content="width=device-width, initial-scale=1.0">'; echo '<meta name="apple-mobile-web-app-capable" content="yes">'; } add_action('wp_head', 'disable_browser_reading_view');
补充说明:
- 其中
og:type="website"是关键,Safari会优先根据这个标签判断页面类型,如果是website而非article,就不会触发阅读视图。 - 如果你的主题已经有
viewport标签,不用重复添加,避免冲突。
二、用户打开阅读视图后重定向到指定页面
阅读视图是浏览器本地渲染的,没法通过服务器端直接拦截,但我们可以用JavaScript检测当前是否处于阅读视图状态,然后强制跳转。
添加以下JS代码到你的网站页脚(可以用自定义HTML插件、主题的footer.php文件,或者代码片段插件的前端代码模块):
document.addEventListener('DOMContentLoaded', function() { // 检测主流浏览器的阅读视图特征 const isInReaderMode = document.body.classList.contains('reader-mode') || // Safari document.body.classList.contains('chrome-reader-mode') || // Chrome/Edge window.location.search.includes('reader=1'); // 部分浏览器的URL标识 if (isInReaderMode) { // 替换成你想要重定向的页面地址,站内用相对路径更稳妥 window.location.href = '/your-target-page/'; } });
注意事项:
- 部分浏览器的阅读视图可能会限制JS执行,这个方法能覆盖绝大多数主流浏览器(Safari、Chrome、Edge),但没法保证100%兼容所有小众浏览器。
- 测试时记得在目标浏览器里手动触发阅读视图,验证跳转是否生效。
内容的提问来源于stack exchange,提问作者DK Singh




