WordPress Porto 主题后台一直提示 Porto Functionality 插件需要更新,如何隐藏?

WordPress Porto 主题后台一直提示 Porto Functionality 插件需要更新,如何隐藏?

在使用 WordPress 搭建外贸网站或企业官网时,很多人会选择 Porto 主题。Porto 主题功能比较完整,适合 WooCommerce、企业站、产品展示站等项目。

但是在实际项目中,尤其是网站克隆、迁移、复制部署之后,WordPress 后台可能会一直出现类似下面的提示:

html 复制代码
The following plugin needs to be updated to its latest version to ensure maximum compatibility with this theme: Porto Functionality.
Begin updating plugin

后台提示大概是这样的:

html 复制代码
<div id="setting-error-tgmpa" class="notice notice-success settings-error is-dismissible"> 
  <p>
    <strong>
      <span>
        The following plugin needs to be updated to its latest version to ensure maximum compatibility with this theme:
        <em>Porto Functionality</em>.
      </span>
      <span>
        <a class="button button-primary" href="/wp-admin/admin.php?page=porto-setup-wizard&step=default_plugins">
          Begin updating plugin
        </a>
      </span>
    </strong>
  </p>
  <button type="button" class="notice-dismiss">
    <span class="screen-reader-text">Dismiss this notice.</span>
  </button>
</div>

如果这个网站只是自己使用还好,但如果后台需要交付给客户使用,这种提示就会显得不专业。尤其是克隆站点后,由于授权、主题包、插件包不一致,可能点击更新也无法正常更新。

本文记录一种比较安全、简单的方式:通过 MU 插件隐藏 Porto Functionality 更新提示


一、为什么会出现这个提示?

Porto 主题依赖一个配套插件:

text 复制代码
Porto Functionality

这个插件主要用于支持 Porto 主题的一些扩展功能,比如:

  • Porto 自带短代码
  • 主题扩展模块
  • 页面构建相关功能
  • WooCommerce 增强功能
  • Header、Footer、模板相关功能

当 Porto 主题检测到 Porto Functionality 插件版本过低、缺失或者不匹配时,就会通过 TGMPA 机制在 WordPress 后台显示提示:

text 复制代码
The following plugin needs to be updated to its latest version to ensure maximum compatibility with this theme: Porto Functionality.

TGMPA 全称是:

text 复制代码
TGM Plugin Activation

很多商业主题都会使用它来检测主题所需插件是否安装、启用或更新。


二、为什么不建议直接修改主题文件?

很多人第一反应是直接去主题文件里删除提示代码,比如修改:

text 复制代码
wp-content/themes/porto/
wp-content/plugins/porto-functionality/

这种方式不推荐,原因有三个:

  1. 主题或插件一旦更新,修改内容会被覆盖。
  2. 修改商业主题核心文件,后期维护很麻烦。
  3. 不利于迁移和备份,换服务器后容易忘记改过哪里。

所以更推荐使用 WordPress 的 MU 插件方式。


三、什么是 MU 插件?

MU 插件的目录是:

text 复制代码
wp-content/mu-plugins/

MU 插件的特点:

  • 不需要在后台手动启用
  • 放进去就会自动加载
  • 客户一般不会在普通插件列表里看到
  • 适合放一些后台增强、隐藏提示、全局修复类代码

所以,用 MU 插件隐藏后台提示,是一种比较干净的做法。


四、创建 MU 插件隐藏 Porto 提示

进入网站目录:

bash 复制代码
cd /www/wwwroot/你的域名/wp-content/
mkdir -p mu-plugins
nano mu-plugins/hide-porto-notice.php

然后写入下面代码:

php 复制代码
<?php
/**
 * Plugin Name: Hide Porto TGMPA Notice
 * Description: Hide Porto Functionality update notice in WordPress admin.
 * Version: 1.0
 */

/**
 * 隐藏 Porto Functionality 更新提示
 * 只隐藏后台提示,不影响前台页面。
 */
add_action('admin_head', function () {
    ?>
    <style>
        #setting-error-tgmpa {
            display: none !important;
        }

        .notice:has(a[href*="porto-setup-wizard"][href*="default_plugins"]) {
            display: none !important;
        }
    </style>
    <?php
}, 999);


/**
 * 防止部分后台页面异步加载后再次显示
 */
add_action('admin_footer', function () {
    ?>
    <script>
        document.addEventListener('DOMContentLoaded', function () {
            document.querySelectorAll('.notice, .settings-error').forEach(function (el) {
                var text = el.innerText || '';
                var html = el.innerHTML || '';

                if (
                    text.includes('Porto Functionality') ||
                    html.includes('porto-setup-wizard') ||
                    el.id === 'setting-error-tgmpa'
                ) {
                    el.remove();
                }
            });
        });
    </script>
    <?php
}, 999);

保存后,刷新 WordPress 后台,提示就会被隐藏。


五、代码说明

1. 通过 CSS 隐藏固定 ID

Porto 这个提示的外层 ID 通常是:

html 复制代码
id="setting-error-tgmpa"

所以可以直接通过 CSS 隐藏:

css 复制代码
#setting-error-tgmpa {
    display: none !important;
}

2. 通过链接特征继续匹配

有时不同页面中提示的 ID 或 class 可能发生变化,但按钮链接一般会包含:

text 复制代码
porto-setup-wizard
default_plugins

所以加上这一段:

css 复制代码
.notice:has(a[href*="porto-setup-wizard"][href*="default_plugins"]) {
    display: none !important;
}

这可以匹配包含 Porto 插件更新按钮的 notice。

3. 通过 JavaScript 二次移除

部分后台页面可能是动态加载提示,或者 CSS 没有及时生效,所以又加了 JavaScript 二次处理:

javascript 复制代码
document.querySelectorAll('.notice, .settings-error').forEach(function (el) {
    var text = el.innerText || '';
    var html = el.innerHTML || '';

    if (
        text.includes('Porto Functionality') ||
        html.includes('porto-setup-wizard') ||
        el.id === 'setting-error-tgmpa'
    ) {
        el.remove();
    }
});

这样即使提示后加载,也可以被移除。


六、只对客户隐藏,管理员自己保留提示

有时候我们自己还想看到这些后台提示,只是不希望客户看到。

可以根据登录用户邮箱进行判断。

例如:

php 复制代码
<?php
/**
 * Plugin Name: Hide Porto Notice For Clients
 * Description: Hide Porto Functionality update notice for client users only.
 * Version: 1.0
 */

add_action('admin_head', function () {
    $user = wp_get_current_user();

    // 开发者邮箱,改成自己的管理员邮箱
    $developer_emails = array(
        'your-email@example.com'
    );

    // 开发者自己不隐藏提示
    if (in_array($user->user_email, $developer_emails, true)) {
        return;
    }
    ?>
    <style>
        #setting-error-tgmpa {
            display: none !important;
        }

        .notice:has(a[href*="porto-setup-wizard"][href*="default_plugins"]) {
            display: none !important;
        }
    </style>
    <?php
}, 999);

add_action('admin_footer', function () {
    $user = wp_get_current_user();

    $developer_emails = array(
        'your-email@example.com'
    );

    if (in_array($user->user_email, $developer_emails, true)) {
        return;
    }
    ?>
    <script>
        document.addEventListener('DOMContentLoaded', function () {
            document.querySelectorAll('.notice, .settings-error').forEach(function (el) {
                var text = el.innerText || '';
                var html = el.innerHTML || '';

                if (
                    text.includes('Porto Functionality') ||
                    html.includes('porto-setup-wizard') ||
                    el.id === 'setting-error-tgmpa'
                ) {
                    el.remove();
                }
            });
        });
    </script>
    <?php
}, 999);

把这里的邮箱:

php 复制代码
'your-email@example.com'

改成自己的 WordPress 管理员邮箱即可。

这样客户账号登录后台时看不到提示,开发者账号登录后台时仍然可以看到。


七、注意事项

1. 这只是隐藏提示,不是修复版本兼容问题

这个方法只是让后台界面更干净,不代表 Porto Functionality 插件已经更新成功。

如果网站前台和后台功能都正常,只是不想让客户看到这个提示,可以这样处理。

但是如果出现下面这些问题,还是建议检查 Porto 主题和 Porto Functionality 插件版本是否匹配:

  • 前台页面模块错乱
  • Porto 短代码失效
  • Header Builder 异常
  • Footer Builder 异常
  • WooCommerce 产品页面样式异常
  • 页面构建器模块无法编辑
  • 后台 Porto 设置无法保存

2. 不建议隐藏所有 WordPress notice

有些人会直接隐藏全部后台通知:

css 复制代码
.notice {
    display: none !important;
}

不建议这样做。

因为 WordPress 的后台通知里可能包含重要信息,比如:

  • 插件报错
  • PHP 版本警告
  • 安全提醒
  • 数据库更新提醒
  • WooCommerce 状态提醒

本文代码只针对 Porto Functionality 相关提示,不会影响其他正常后台提示。

3. 克隆站点后要检查授权和插件版本

克隆 WordPress 网站时,最好检查这些内容:

  • 主题是否完整
  • 子主题是否存在
  • 必要插件是否启用
  • Porto Functionality 是否存在
  • WPBakery / Elementor 等构建器是否正常
  • WooCommerce 页面是否正常
  • PHP 版本是否兼容
  • 缓存插件是否需要重新配置

隐藏提示只是交付时的界面优化,不建议把它当成长期兼容性解决方案。


八、总结

Porto 主题后台提示:

text 复制代码
The following plugin needs to be updated to its latest version to ensure maximum compatibility with this theme: Porto Functionality.

通常是因为 Porto 主题检测到 Porto Functionality 插件版本不匹配。

如果网站是克隆站点,插件暂时无法更新,但前台和后台功能正常,可以通过 MU 插件隐藏这个提示。

推荐做法是:

text 复制代码
wp-content/mu-plugins/hide-porto-notice.php

通过 CSS + JavaScript 精准隐藏 Porto Functionality 更新提示。

这种方式的优点是:

  • 不修改主题文件
  • 不影响前台
  • 不影响其他后台通知
  • 不容易被主题更新覆盖
  • 适合客户后台交付

最终效果就是客户登录 WordPress 后台时,不会再看到 Porto Functionality 更新提示,后台界面更加干净专业。

相关推荐
e6zzseo1 天前
wordpress独立站seo怎么做才有效
seo·wordpress·独立站·内容优化·外链建设
Web极客码3 天前
如何让用户订阅WordPress评论?提升用户互动的有效策略
运维·服务器·wordpress
fobwebs3 天前
Wordpress Xstore 主题安装Elementor Pro 后找不到某些Elements 组件的解决方法
element·wordpress·form·xstore·pro elements·elementor pro
代龙涛4 天前
WordPress sidebar.php 侧边栏开发教程
开发语言·php·wordpress
代龙涛5 天前
WordPress header.php 与 footer.php 模板结构详解
开发语言·php·wordpress
Web极客码10 天前
如何在WordPress中添加动态内容
服务器·前端·wordpress
tommyjiatong13 天前
WordPress电商展示站服务器迁移指南
服务器·数据库·wordpress
IT大白鼠15 天前
WordPress组合漏洞wp2shell技术分析报告
wordpress·安全漏洞·wp2shell 漏洞
Markk17 天前
Wordpress及第三方支持工具docker容器化搭建
wordpress
Web极客码22 天前
WordPress SEO优化:提升网站排名的13个关键步骤
服务器·seo·wordpress