【问题标题】:Wordpress;how to remove_action from a Plugin to hide admin_notices created by another PluginWordpress;如何从插件中删除操作以隐藏由另一个插件创建的 admin_notices
【发布时间】:2021-02-08 01:53:17
【问题描述】:

我是 WP 钩子的初学者,(动作和过滤器) 我能够创建一个插件,在 WP 仪表板中显示所有 4 个管理员通知

这里是插件一代码

    /* Start admin notices on */
  
function display_admin_notice() {
    ?>
    <div class ="notice notice-success is-dismissible"><p>Congratulatios! it seems you have a nice success notice</p></div>
    <div class = "notice notice-error"><p>What a nice error message</p> </div>
    <div class = "notice notice-warning"><p>WARNING!!! site about to blow up in pieces</p></div>
    <div class = "notice notice-info is-dismissible"><p>INFO - you must renew license</p></div>

    <?php
  }
  add_action( 'admin_notices', 'display_admin_notice' );
  
/* Stop admin notices on */

效果很好。

现在我有另一个隐藏所有通知的插件

/* Start Block ALL admin notices */

add_action('admin_enqueue_scripts', 'block_dismissable_admin_notices');
add_action('login_enqueue_scripts', 'block_dismissable_admin_notices');

function block_dismissable_admin_notices() {
   echo '<style>.wp-core-ui .notice{ display: none !important; }</style>';
}

/* Stop Block ALL admin notices */

它也很好用

但我需要从第一个插件中删除操作,而不是隐藏所有通知,我的意思是,有没有办法获得

add_action( 'admin_notices', 'display_admin_notice'

来自第一个插件和 remove_action,因此插件仅隐藏/阻止来自该插件的 admin_notices,而不是来自所有 Wordpress 核心或其他插件的?

提前致谢

【问题讨论】:

    标签: php wordpress plugins hook action


    【解决方案1】:

    您可以添加一个 if 语句来有条件地检查是否需要操作挂钩,而不是加载代码然后卸载它(毫无意义)。

    例如。

    $noticesOn = true; // Conditional setting could be here
    
    if ( $noticesOn == true ) {
        add_action('admin_enqueue_scripts', 'block_dismissable_admin_notices');
        add_action('login_enqueue_scripts', 'block_dismissable_admin_notices');
    }
    

    【讨论】:

    • 嗨,瑞恩,谢谢。我不明白,我很抱歉。我需要挂钩或任何单词,从另一个插件添加_action('admin_notices','display_admin_notice'(插件之一),我不知道如何完成该部分以添加块/隐藏代码,就像你指出的那样跨度>
    【解决方案2】:

    好的,我终于明白了

    这就是解决办法

    add_action( 'init', 'remove_my_action' );
    function remove_my_action()
    {
    global $wp_filter;
    remove_action( 'admin_notices', 'display_admin_notice');
    }
    

    效果很好

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-07
      • 1970-01-01
      • 1970-01-01
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多