如何使 WordPress 插件在所有管理页面上显示内容?
How to make WordPress plugin to show content on all admin pages?
我正在尝试开发一个插件,以便它可以在 WordPress 的所有管理页面中显示类似小通知横幅的内容。我只需要知道它们的功能方式,我就可以开发它的设计。很抱歉在没有任何代码实现的情况下提出问题,但我尽力了解它。
WordPress 有一些很棒的东西,叫做 Action Hooks,其中一些在管理页面上触发。基本上它们一直按顺序调用,所以你可以说 "Hey WordPress, run X function on Y hook",并且 Y 挂钩运行的任何 where/any 次,都会触发 X 函数。
他们有一个名为 admin_notices
的便利工具,您可以将通知放入其中(类似于 publish/update 页面或 post 时的 "Post Updated" 通知)
所以首先你要写一个回显通知的函数(注意目前你需要为它们包含 HTML 标记)
function so51734745_admin_notice() { ?>
<div class="notice notice-success is-dismissible">
<p><?php _e( 'My Plugin is Doing Something!', 'plugin-text-domain' ); ?></p>
</div>
<?php }
现在您只需将它挂接到 admin_notices
挂钩中即可:
add_action( 'admin_notices', 'so51734745_admin_notice' );
Note: It's generally considered a bad practice to have a persistent non-dismissable notices when your plugin is active. There are many plugins (I'll keep nameless) that have persistent notices until you complete X action. Unless it's critical, notices should be dismissable and or only fired under certain conditions.
考虑到这一点,我的一个插件会在用户使用我的插件覆盖 page/post 类似于以下内容时提醒他们:
function so51734745_admin_notice() {
if( $my_condition == true ){ ?>
<div class="notice notice-success is-dismissible">
<p><?php _e( 'My Plugin is Doing Something!', 'plugin-text-domain' ); ?></p>
</div>
}
<?php }
所以它只会在该条件为真时触发。如果您的插件具有广泛的吸引力,请记住这一点。如果每个插件都是 "important" 和 "persistent notice",那么没有插件是重要的,所有的通知都会被忽略。
如果您需要不同类型的横幅,您可以考虑在另一个管理挂钩上输出类似的 HTML,例如 admin_footer
, but then you'll have to style it yourself with a CSS file that's properly enqueued via admin_enqueue_scripts
。
另请注意,Gutenberg 的当前迭代(蹩脚地)只是在启用 Gutenberg 的 page/post 编辑屏幕上隐藏管理员通知 - 所以如果这对你来说是个问题,你需要解决这个问题。
我正在尝试开发一个插件,以便它可以在 WordPress 的所有管理页面中显示类似小通知横幅的内容。我只需要知道它们的功能方式,我就可以开发它的设计。很抱歉在没有任何代码实现的情况下提出问题,但我尽力了解它。
WordPress 有一些很棒的东西,叫做 Action Hooks,其中一些在管理页面上触发。基本上它们一直按顺序调用,所以你可以说 "Hey WordPress, run X function on Y hook",并且 Y 挂钩运行的任何 where/any 次,都会触发 X 函数。
他们有一个名为 admin_notices
的便利工具,您可以将通知放入其中(类似于 publish/update 页面或 post 时的 "Post Updated" 通知)
所以首先你要写一个回显通知的函数(注意目前你需要为它们包含 HTML 标记)
function so51734745_admin_notice() { ?>
<div class="notice notice-success is-dismissible">
<p><?php _e( 'My Plugin is Doing Something!', 'plugin-text-domain' ); ?></p>
</div>
<?php }
现在您只需将它挂接到 admin_notices
挂钩中即可:
add_action( 'admin_notices', 'so51734745_admin_notice' );
Note: It's generally considered a bad practice to have a persistent non-dismissable notices when your plugin is active. There are many plugins (I'll keep nameless) that have persistent notices until you complete X action. Unless it's critical, notices should be dismissable and or only fired under certain conditions.
考虑到这一点,我的一个插件会在用户使用我的插件覆盖 page/post 类似于以下内容时提醒他们:
function so51734745_admin_notice() {
if( $my_condition == true ){ ?>
<div class="notice notice-success is-dismissible">
<p><?php _e( 'My Plugin is Doing Something!', 'plugin-text-domain' ); ?></p>
</div>
}
<?php }
所以它只会在该条件为真时触发。如果您的插件具有广泛的吸引力,请记住这一点。如果每个插件都是 "important" 和 "persistent notice",那么没有插件是重要的,所有的通知都会被忽略。
如果您需要不同类型的横幅,您可以考虑在另一个管理挂钩上输出类似的 HTML,例如 admin_footer
, but then you'll have to style it yourself with a CSS file that's properly enqueued via admin_enqueue_scripts
。
另请注意,Gutenberg 的当前迭代(蹩脚地)只是在启用 Gutenberg 的 page/post 编辑屏幕上隐藏管理员通知 - 所以如果这对你来说是个问题,你需要解决这个问题。