如何使WordPress插件在所有管理页面上显示内容?

时间:2018-08-07 20:16:26

标签: wordpress dashboard

我正在尝试开发一个插件,以便它可以在WordPress的所有管理页面中显示类似于小通知横幅的内容。我只需要知道它们的功能方式即可开发其设计。很抱歉在没有任何代码实现的情况下提出问题,但我已尽力对此有所了解。

1 个答案:

答案 0 :(得分:2)

WordPress有一些光荣的东西叫做Action Hooks,其中一些在管理页面上启动。基本上,它们总是被按顺序调用,因此您可以说“嘿,WordPress,在Y钩上运行X函数”,并且在任何时间/任何时间运行Y钩都会触发X函数。

他们有一个方便使用的名为admin_notices的通知,您可以将其放入通知中(类似于发布/更新页面或帖子时的“更新后”通知)

因此,首先您需要编写一个回显通知的函数(请注意,当前您需要为其添加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' );
  

注意:通常在您的插件处于活动状态时发出持续的不可撤消通知是一种不好的做法。在完成X动作之前,有很多插件(我会保持匿名)会持续发出通知。除非是关键,否则通知应该是可撤消的,或者仅在特定条件下才会发布。

请牢记这一点,我的其中一个插件会在用户使用我的插件覆盖类似于以下内容的页面/帖子内容时向用户发出警报:

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 }

因此只有在该条件为真时才会触发。如果您的插件具有广泛的吸引力,请记住这一点。如果每个插件都是“重要的”且带有“持久性声明”,则说明没有插件是重要的,所有声明都将被忽略。

如果您需要其他类型的横幅,则可以考虑在另一个管理钩子上使用类似的HTML输出,例如admin_footer,但是您必须自己使用通过{{3}正确排队的CSS文件来设置其样式。 }。

还请注意,Gutenberg的当前版本(很奇怪)只是在启用了Gutenberg的页面/帖子编辑屏幕上隐藏了管理员通知-因此,如果这对您来说是个问题,就需要解决。