如何在点击关闭按钮后停止显示管理通知

时间:2016-10-14 作者:iSaumya

首先,我知道如何在wordpress管理菜单中添加管理通知。我添加了这样的管理通知:

<?php
add_action( \'admin_notices\', function() {
    ?>
    <div class="notice notice-success is-dismissible">
        <p><?php _e( \'Imagine something here!\', \'sample-text-domain\' ); ?></p>
    </div>
    <?php
});
现在,我的代码运行得很好,很顺利,只是有一个问题。

您现在可以看到,只要用户激活插件,就会立即显示此通知。它会一直保持在顶部,直到用户单击关闭按钮。

现在,当用户单击任何其他管理页面时,通知再次出现。

我想要的是:

我想为所有第一次安装插件或更新到我的插件最新版本的人显示此通知。

但一旦用户单击关闭按钮,无论用户进入哪个页面,它都不会再次显示。

我在谷歌上搜索了一下,但没有找到任何有用的答案,我希望你们能在这里帮助我。

1 个回复
最合适的回答,由SO网友:C C 整理而成

有两种处理方法。

a. Attach a timer to the notice:

您可以在通知上附加一个3秒计时器(或任意长的计时器),如下所示:

<?php
set_transient( "my-plugin", "alive", 3 );
add_action( \'admin_notices\', function() {
   //Syntax correction
    if ( "alive" == get_transient( "my-plugin" ) ) {
        ?>
        <div class="notice notice-success is-dismissible">
            <p><?php _e( \'Imagine something here!\', \'sample-text-domain\' ); ?></p>
        </div>
        <?php
        delete_transient( "my-plugin" );
    }
});
3秒钟后,瞬态将过期,并且将来对admin_notices 挂钩函数不会显示通知。插件安装完成后,应该有足够的时间在第一页刷新时显示通知。您可以根据需要使用计时器。

b. Keep a history of the dismissal of the notice, with your own dismiss action:

function my_plugin_notice() {
    $user_id = get_current_user_id();
    if ( !get_user_meta( $user_id, \'my_plugin_notice_dismissed\' ) ) 
        echo \'<div class="notice"><p>\' . _e( \'Imagine something here!\', \'sample-text-domain\' ) . \'</p><a href="?my-plugin-dismissed">Dismiss</a></div>\';
}
add_action( \'admin_notices\', \'my_plugin_notice\' );
    
function my_plugin_notice_dismissed() {
    $user_id = get_current_user_id();
    if ( isset( $_GET[\'my-plugin-dismissed\'] ) )
        add_user_meta( $user_id, \'my_plugin_notice_dismissed\', \'true\', true );
}
add_action( \'admin_init\', \'my_plugin_notice_dismissed\' );
一旦解除,用户元将使用该信息更新,并且admin_notices 钩子函数将对此进行检查,并且仅在不正确时显示消息。

相关推荐

使用wp_ins_post()插入新帖子后,该帖子对wp_Query不可见,但同样的WP_Query也适用于从wp-admin面板插入的帖子

制作脚本,在特定条件下向数据库添加新的自定义帖子。一切正常。但有一种流动。在用我的脚本将帖子写入数据库后,我无法用WP\\u查询将其提取出来。如果我直接从wp管理面板添加帖子,所有WOKR都可以。但如果我用脚本添加帖子,我无法用WP\\u查询提取它们。新添加的帖子显示在wp admin面板的帖子列表中,包含所有所需的值,这些都很酷,但对wp\\U查询不可见。只有在我在wp管理面板中更改帖子的任何自定义字段并按下更新按钮后,它才可见。参考页面后,一切都开始完美工作。新帖子似乎已经发布,当我列出所有此类可用帖