【问题标题】:How to make WordPress plugin to show content on all admin pages? [duplicate]如何使 WordPress 插件在所有管理页面上显示内容? [复制]
【发布时间】:2019-01-15 00:20:07
【问题描述】:

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

【问题讨论】:

    标签: wordpress dashboard


    【解决方案1】:

    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 }
    

    所以它只在条件为真时触发。如果您的插件具有广泛的吸引力,请记住这一点。如果每个插件都是“重要的”并带有“持久通知”,那么没有插件是重要的,所有的通知都会被忽略。

    如果您需要不同类型的横幅,您可以考虑在另一个管理挂钩(如 admin_footer)上使用类似的 HTML 输出,但随后您必须使用通过 admin_enqueue_scripts 正确排队的 CSS 文件自行设置样式。

    另请注意,Gutenberg 的当前迭代(蹩脚)只是在启用 Gutenberg 的页面/帖子编辑屏幕上隐藏管理员通知 - 因此,如果这对您来说是个问题,您需要解决这个问题。

    【讨论】:

      猜你喜欢
      • 2011-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-07
      相关资源
      最近更新 更多