最近在开发一个 wordpress 插件时,遇到了一个问题:插件需要显示一个重要的提示信息,但这个信息在用户关闭后,刷新页面就会再次出现。这不仅影响用户体验,也增加了不必要的麻烦。我尝试了一些方法,例如使用 wordpress 的选项存储来记录通知状态,但发现实现起来比较复杂,而且代码不够优雅。
这时,我发现了 collizo4sky/persist-admin-notices-dismissal 这个库。它专门用于解决 WordPress 管理通知的持久化问题,并且使用起来非常简单。首先,使用 Composer 安装该库:
<code class="bash">composer require collizo4sky/persist-admin-notices-dismissal</code>
安装完成后,我们需要在插件中引入该库并进行初始化:
<code class="php">add_action( 'admin_init', array( 'PAnD', 'init' ) );</code>
接下来,让我们看看如何使用这个库来持久化一个管理通知。假设我们想要显示一个成功的提示信息:
<code class="php">function my_plugin_success_notice() { if ( ! PAnD::is_admin_notice_active( 'my-success-notice-forever' ) ) { return; } ?> <div data-dismissible="my-success-notice-forever" class="updated notice notice-success is-dismissible"> <p><?php _e( '操作成功!', 'my-plugin-textdomain' ); ?></p><div class="aritcle_card flexRow">
<div class="artcardd flexRow">
<a class="aritcle_card_img" href="/ai/1468" title="AI改图神器"><img
src="https://img.php.cn/upload/ai_manual/000/000/000/175680376930740.jpg" alt="AI改图神器" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a href="/ai/1468" title="AI改图神器">AI改图神器</a>
<p>AI万能图片编辑器,一键抠图,去水印,智能图片美化,照片转漫画,照片变活转视频,图片无损放大,一键背景虚化,位图智能转矢量图</p>
</div>
<a href="/ai/1468" title="AI改图神器" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
</div>
</div> </div> <?php}add_action( 'admin_notices', 'my_plugin_success_notice' );</code>这段代码中,data-dismissible="my-success-notice-forever" 属性指定了通知的唯一标识符和持久化策略(forever 表示永久隐藏)。PAnD::is_admin_notice_active() 函数检查通知是否已被用户关闭。如果已被关闭,则通知将不会显示。 这个库还支持设置通知隐藏的天数,例如 data-dismissible="my-notice-3" 将会在3天后再次显示。
这个库的优势在于:
- 简单易用: 只需简单的几行代码即可实现通知的持久化。
- 高效便捷: 无需手动处理选项存储,库会自动完成所有持久化操作。
- 灵活可控: 支持永久隐藏和设置隐藏天数两种策略。
通过使用 collizo4sky/persist-admin-notices-dismissal 库,我成功地解决了 WordPress 管理通知的持久化问题,提升了用户体验,也简化了插件的代码。 现在,我的插件提示信息只会在用户第一次看到并关闭后才会消失,避免了重复显示带来的困扰。 如果你也遇到类似的问题,不妨试试这个库,相信它会给你带来很大的帮助。 记住,需要在你的 admin_init hook 中调用 PAnD::init() 来初始化这个库。









