建站教程

建站教程

Products

当前位置:首页 > 建站教程 >

如何向 WordPress 添加管理员通知和错误消息

GG网络技术分享 2025-03-18 16:05 1


管理员通知是插件不可或缺的一部分,它们允许您向用户显示错误/成功/警告消息,提示他们采取行动或简单地通知他们发生的事情。

在本文中,我们将了解添加管理员通知的标准方法以及 WordPress 4.2 中引入的一些附加选项,包括如何使通知可关闭。

继续阅读,或使用以下链接跳转:

  • 什么是管理员通知?
  • 管理员通知的剖析
  • 向页面添加通知
  • 通过用户操作生成通知
  • 可解雇通知

    • 有条件的通知
    • 检测点击
    • 更新我们的选项
    • 收回通知

什么是管理员通知?

管理员通知是由白色背景、彩色左边框和一些文本组成的通知块。 有三种类型:绿色、橙色和红色。 给定类名,它们应该分别用于更新完成通知、更新提示和错误。 话虽如此,绿色通常用于一般的成功信息,我认为这很好。

WordPress 后端顶部的管理员通知
WordPress 后端顶部的管理员通知

请注意,更新提示 - 或更新唠叨 - 出现在屏幕的最顶部,而其他两种类型显示在页面标题下方。

管理员通知的剖析

每个通知本质上是一个 divnotice 类,除了另一个特定的。 绿色通知使用 updated 类,红色通知使用 error 类,更新 nags 使用 update-nag 班级。 在这个类中,您可以添加任何内容,通常选择用段落标签包围的单行文本。 上面屏幕截图中通知的 HTML 如下所示:

加载要点 5ecfd922da2f580f97e4974b3dfb74ab

向页面添加通知

操作用于添加更新消息。 这是理想的,因为插件作者可以覆盖默认行为。 在某些情况下,您可能想要隐藏某些消息 - 操作使您能够这样做。 使用的钩子是 admin_notices,钩子函数应该简单地回显所需的 HTML,如下所示:

加载要点 908c9e99fc7e32b55a4cb81c1af79931

如果您需要一次添加两个通知,我建议使用两个单独的钩子,而不是在同一个函数中为两者编写 HTML。 这允许您或其他插件作者仅禁止显示一条消息。 这种灵活性是 WordPress 模块化的基础,作为插件作者,维护这个标准是我们的工作。

加载要点 564265f84f1ab7c6705a49462862f10f

如果你不熟悉 _e() 函数它用于翻译目的。 它是一系列功能的一部分,您可以使用它使您的插件以多种语言提供。 如果您想了解更多信息,请查看我们的插件翻译指南

通过用户操作生成通知

通常,您的代码中会有一些 if 语句,因为您的通知取决于特定的操作和结果。

让我们看一个插件,如果 Advanced Custom Fields 插件未激活,它会显示通知。 如果我们依赖它,或者它使我们的插件变得更好,这很方便。

加载要点 a0445d05835d7221d591141b5975d192

可解雇通知

WordPress 4.2 为我们提供了内置的可忽略通知。 在前端你需要做的就是给你的通知 is-dismissable 班级。

可解雇的 WordPress 通知
WordPress 中的可驳回通知

不利的一面是,除了少数情况外,目前还没有标准化的方法让 WordPress 记住解雇。 在核心开发人员 Helen Hou-Sandi 的更新中阅读所有相关信息。

目前,最好的方法是将事件绑定到点击并通过 AJAX 执行我们需要执行的任何操作。 其过程如下:

  1. 仅当用户未将其关闭时,才会显示该通知。 因此,我们将有一个选择 my-acf-notice-dismissed 这将是 1 如果用户已驳回通知。
  2. 我们将检测到点击关闭按钮并触发 AJAX 调用
  3. AJAX 调用将更新 my-acf-notice-dismissed 选项 1
  4. 如果我们想要超级彻底,我们可以检测到 the_field() ACF 功能并删除该选项(如果存在)。 这将确保如果 ACF 已安装,然后卸载,通知会回来。 这需要在每个页面加载时检查功能,这可能有点浪费。

有条件的通知

让我们抓住 my-acf-notice-dismissed 数据库中的选项并创建一个通知,该通知仅在选项的值不是时才显示 1.

加载要点 ccb0160b806f55a0b0898aabba5c1fbe

这与我们上面的代码非常相似,只是为我们的选项添加了一个空检查。 我们选项的值很可能是 0,但这仍然被认为是空的,所以我们都设置在那里。

请注意,我添加了一个 my-acf-notice 类到通知,以确保我们只能将事件绑定到我们的通知。

检测点击

在我们编写任何 Javascript 之前,我们需要创建一个 JS 文件并将其加入队列。 我假设一个带有 Javascript 文件的简单插件 js 文件夹。

加载要点 9dd2aecd4530ace90ea0d47c351400b2

在这个 JS 文件中,我们需要创建一个点击事件,绑定到 .my-acf-notice – 这个点击事件将触发我们的 AJAX 调用。

加载要点 d6eaace630c432e871f50b34fbb62b40

更新我们的选项

我们的 AJAX 调用的动作参数是 my_dismiss_acf_notice 它为我们提供了用于创建处理服务器端事物的代码的模板。 所需要的只是快速更新 my-acf-notice-dismissed 选项,将其值设置为 1。

加载要点 51487ef02492b4a8c4f476684d7d51ee

如果您没有在 WordPress 中使用过 AJAX,那么在我们有一个方便的 AJAX 指南之前,您可以使用它来提高您的技能。

此时您应该能够加载仪表板,查看通知并将其关闭,它不会再次显示在管理员中。

收回通知

现在我们的通知还不完整。 如果没有安装 ACF,它会弹出。 然后用户可以关闭它,但稍后安装 ACF。 如果 ACF 因任何原因被停用,该通知将保持隐藏状态。

为了解决这个问题,我们可以检查是否存在 the_field() function - ACF 中使用的一个突出功能 - 如果它不存在,请删除该选项。

这有点浪费,但我们可以使用仅在管理屏幕上触发的管理挂钩来完成,这应该没问题。

加载要点 3ecdaf77b4a3ee888de7ca0f2109c655

管理员通知是管理员体验中有用的模块化部分。 它们可以单独注册,让开发人员更好地访问您的工作。

WordPress 4.2 中的新增功能允许忽略通知,尽管我们必须做一些工作才能使它们持久化。 希望这会随着为更好的通知管理而实施的框架而改变,也许在接下来的几个版本中。

如果您有一个很好的自定义方法来创建通知,或者您使用默认方法取得了很好的效果,请在下面的评论中告诉我们。

标签: WordPress op

提交需求或反馈

Demand feedback