You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在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

火山引擎 最新活动