在插件中显示“一次性”通知

时间:2016-09-27 作者:Alan Storm

在WordPress的后端,您可以使用如下所示的HTML添加通知和错误

<div class="updated error">
    <p><?php esc_html_e( \'A bad thing happened!\', \'your-text-domain\' );?></p>
</div>    
您可以使用添加这些通知admin_notices

add_action( \'admin_notices\', function(){
    ?>
        <div class="updated error">
            <p><?php esc_html_e( \'A bad thing happened!\', \'your-text-domain\' );?></p>
        </div>         
    <?php
} );
WordPress是否有一个机制,或者是否有一个“通常认为良好的”第三方实践,允许您设置“一次性”通知?我想的情况是

如果用户重新加载或重新导航到页面(后退按钮),消息不会再次显示。我使用的其他应用程序框架都有一个会话抽象来处理类似的事情。我很好奇WordPress是否有类似的功能,或者是否有一种被普遍接受的方式来实现这一点,或者WordPress插件是否没有做到这一点™.

1 个回复
SO网友:Ahmed Fouad

想法是你需要save_errors 或随时更新包含错误/通知的选项。一旦其输出admin_notices 它将被清除。

/**
 * Sample_Notice_Handling
 */
class Sample_Notice_Handling {

    public static $_notices  = array();

    /**
     * Constructor
     */
    public function __construct() {

        add_action( \'admin_notices\', array( $this, \'output_errors\' ) );
        add_action( \'shutdown\', array( $this, \'save_errors\' ) );
    }

    /**
     * Add an error message
     */
    public static function add_error( $text ) {
        self::$_notices[] = $text;
    }

    /**
     * Save errors to an option
     */
    public function save_errors() {
        update_option( \'custom_notices\', self::$_notices );
    }

    /**
     * Show any stored error messages
     */
    public function output_errors() {
        $errors = maybe_unserialize( get_option( \'custom_notices\' ) );

        if ( ! empty( $errors ) ) {

            echo \'<div id="mc_errors" class="error notice is-dismissible">\';

            foreach ( $errors as $error ) {
                echo \'<p>\' . wp_kses_post( $error ) . \'</p>\';
            }

            echo \'</div>\';

            // Clear
            delete_option( \'custom_notices\' );
        }
    }

}

相关推荐

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

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