当前位置: 首页 > news >正文

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

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

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

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

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

后台提示大概是这样的:

<divid="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><aclass="button button-primary"href="/wp-admin/admin.php?page=porto-setup-wizard&step=default_plugins">Begin updating plugin</a></span></strong></p><buttontype="button"class="notice-dismiss"><spanclass="screen-reader-text">Dismiss this notice.</span></button></div>

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

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


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

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

Porto Functionality

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

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

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

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

TGMPA 全称是:

TGM Plugin Activation

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


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

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

wp-content/themes/porto/ wp-content/plugins/porto-functionality/

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

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

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


三、什么是 MU 插件?

MU 插件的目录是:

wp-content/mu-plugins/

MU 插件的特点:

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

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


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

进入网站目录:

cd/www/wwwroot/你的域名/wp-content/mkdir-pmu-pluginsnanomu-plugins/hide-porto-notice.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){vartext=el.innerText||'';varhtml=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 通常是:

id="setting-error-tgmpa"

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

#setting-error-tgmpa{display:none!important;}

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

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

porto-setup-wizard default_plugins

所以加上这一段:

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

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

3. 通过 JavaScript 二次移除

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

document.querySelectorAll('.notice, .settings-error').forEach(function(el){vartext=el.innerText||'';varhtml=el.innerHTML||'';if(text.includes('Porto Functionality')||html.includes('porto-setup-wizard')||el.id==='setting-error-tgmpa'){el.remove();}});

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


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

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

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

例如:

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

把这里的邮箱:

'your-email@example.com'

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

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


七、注意事项

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

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

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

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

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

2. 不建议隐藏所有 WordPress notice

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

.notice{display:none!important;}

不建议这样做。

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

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

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

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

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

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

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


八、总结

Porto 主题后台提示:

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

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

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

推荐做法是:

wp-content/mu-plugins/hide-porto-notice.php

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

这种方式的优点是:

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

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

http://www.cnnetsun.cn/news/2882577.html

相关文章:

  • 如何在24GB以下显卡上玩转AI图像生成?FLUX.1-dev FP8模型深度体验
  • ARM Cortex-M DWT CYCCNT 必须显式初始化,jlink调试时正常,使用时异常的问题
  • YOLOv8保姆级调优指南:从CSPDarknet53到PANet,手把手教你提升目标检测精度
  • 鸿蒙导航意图 的 Flutter 侧封装思路
  • 手把手教你用PHY6222芯片的simpleBLEPeripheral例程,从广播数据到属性表一次搞懂
  • 5KB内实现适用于curses的克朗代克纸牌游戏:参加IOCCC的独特尝试!
  • 基于工程教育认证的计算机课程管理平台(论文+源码)
  • Keyboard Chatter Blocker终极指南:Windows键盘连击问题的免费解决方案
  • 在品牌竞争日益激烈的今天,你是否正面临品牌定位模糊、产品陷入同质化内卷、增长陷入瓶颈的困境?
  • 告别“手工账”时代:一文读懂《医药中间体实验记录软件》如何重塑研发效率
  • 数字人切入,我用魔珐星云搭建政务大厅咨询数字人,低成本落地便民接待
  • 从怀疑到真香!2026年文本转语音哪个好用?实测后我只留这一款
  • 跨平台NTRIP协议C++实现:含客户端、服务端与广播服务器三合一工具包
  • 从煤粉到蒸汽:保姆级拆解火电厂锅炉的‘能量流水线’,每一步都在干啥?
  • Ice:3步彻底解决Mac菜单栏杂乱,高效工作空间从此刻开始
  • 从Log4j到Spring4Shell:复盘两大史诗级漏洞,看CVSS评分如何影响应急响应策略
  • 如何快速掌握TrollInstallerX:iOS越狱安装的终极指南
  • 深入S32K344 ADC模块:用MCAL配置实现多通道轮询与硬件触发(附TRGMUX设置)
  • 别再手动维护字典了!用Python装饰器实现一个自动注册器,5分钟搞定插件系统
  • VC6环境下调用J-Link ARM调试库的LED控制演示工程
  • 你的CRC模块真的可靠吗?聊聊Verilog实现中的常见陷阱与Testbench编写要点
  • 从计算器到代码:用C++实现任意数立方根的‘傻瓜式’二分搜索算法(循环100次就够)
  • 从机箱到芯片:深入聊聊电子设备‘接地’那点事,搞懂EMC就成功了一半
  • 098、NCNN/RKNN/OpenVINO 三平台部署对比:从模型转换到 C++ API 推理
  • 猫抓插件:三步搞定网页视频音频下载,开启资源获取新体验!
  • 终极指南:使用XUnity.AutoTranslator轻松实现Unity游戏多语言本地化
  • 告别CS回落!IMS网间互通实战:IBCF与TrGW这对黄金搭档到底怎么干活?
  • 工装外套标准化生产全工艺解析——关键工序、增产逻辑与自动化设备科普
  • 告别RequestDownload!用UDS 0x38服务在ECU文件系统里增删改查(附实战报文解析)
  • 怎样高效转换PDF为PPTX:智能工具一键解决LaTeX演示文稿兼容问题