collizo4sky / persist-admin-notices-dismissal
一个简单的库,用于在 WordPress 控制面板的页面间持久化管理通知的忽略。
Requires
- php: >=5.4
README
一个简单的框架库,用于在 WordPress 控制面板的页面间持久化管理通知的忽略。
安装
运行 composer require collizo4sky/persist-admin-notices-dismissal
或者,将此仓库克隆或下载到您的插件中的 vendor/
文件夹,并像这样包含/要求 persist-admin-notices-dismissal.php
文件
require __DIR__ . '/vendor/persist-admin-notices-dismissal/persist-admin-notices-dismissal.php'; add_action( 'admin_init', array( 'PAnD', 'init' ) );
或者让 Composer 的自动加载器来完成工作。
如何使用
首先,在插件中安装并激活此库。
假设您有以下标记作为您的管理通知
function sample_admin_notice__success() { ?> <div class="updated notice notice-success is-dismissible"> <p><?php _e( 'Done!', 'sample-text-domain' ); ?></p> </div> <?php } add_action( 'admin_notices', 'sample_admin_notice__success' );
要使其在忽略后永久隐藏,请将以下数据属性 data-dismissible="disable-done-notice-forever"
添加到 div 标记,如下所示
function sample_admin_notice__success() { if ( ! PAnD::is_admin_notice_active( 'disable-done-notice-forever' ) ) { return; } ?> <div data-dismissible="disable-done-notice-forever" class="updated notice notice-success is-dismissible"> <p><?php _e( 'Done!', 'sample-text-domain' ); ?></p> </div> <?php } add_action( 'admin_init', array( 'PAnD', 'init' ) ); add_action( 'admin_notices', 'sample_admin_notice__success' );
自动加载器
当使用框架与自动加载器时,您必须也在外部加载类 admin_notices
或 network_admin_notices
钩子。原因是这些钩子位于加载 JavaScript 的 admin_enqueue_script
钩子之后。
只需在您的主插件文件中添加以下内容。
add_action( 'admin_init', array( 'PAnD', 'init' ) );
使用说明和示例
如果您在触发某些操作时显示两个通知;首先,选择一个唯一标识它们的字符串,例如 notice-one
和 notice-two
要使第一个通知在忽略后永远不会出现,其 data-dismissible
属性将为 data-dismissible="notice-one-forever"
,其中 notice-one
是其唯一标识符,而 forever
是忽略时间长度。
要使第二个通知仅隐藏 2 天,其 data-dismissible
属性将为 data-dismissible="notice-two-2"
,其中 notice-two
是其唯一标识符,而 2
是它将被隐藏的天数,即忽略时间长度。
您必须将忽略时间长度追加到唯一标识符的末尾,并使用连字符(-
)分隔,并且此值必须是整数。唯一的例外是字符串 forever
。
要实际上使已忽略的管理通知不显示,请使用 is_admin_notice_active()
函数,如下所示
function sample_admin_notice__success1() { if ( ! PAnD::is_admin_notice_active( 'notice-one-forever' ) ) { return; } ?> <div data-dismissible="notice-one-forever" class="updated notice notice-success is-dismissible"> <p><?php _e( 'Done 1!', 'sample-text-domain' ); ?></p> </div> <?php } function sample_admin_notice__success2() { if ( ! PAnD::is_admin_notice_active( 'notice-two-2' ) ) { return; } ?> <div data-dismissible="notice-two-2" class="updated notice notice-success is-dismissible"> <p><?php _e( 'Done 2!', 'sample-text-domain' ); ?></p> </div> <?php } add_action( 'admin_init', array( 'PAnD', 'init' ) ); add_action( 'admin_notices', 'sample_admin_notice__success1' ); add_action( 'admin_notices', 'sample_admin_notice__success2' );
请注意,如果您在删除插件后清理,请尽量使存储选项的删除尽可能具体。否则,您可能会删除其他项目中的存储选项。
有一个过滤器钩子可用于返回到 JavaScript 文件的正确 URL。以下是一个用法示例,特别是如果此代码在主题中使用。
add_filter( 'pand_theme_loader', '__return_true' );
如果 pand_theme_loader
运行以下钩子为 true
,则将运行以下钩子。您可以通过使用以下方式更改返回值来直接更改 JavaScript 文件的 URL。
add_filter( 'pand_dismiss_notice_js_url', function( $js_url, $composer_path ) { return get_stylesheet_directory_uri() . $composer_path; }, 10, 2 );
酷。不是吗?