*/ class WPUPG_Notices { /** * Register actions and filters. * * @since 3.0.0 */ public static function init() { add_filter( 'wpupg_admin_notices', array( __CLASS__, 'new_user_notice' ) ); add_filter( 'wpupg_admin_notices', array( __CLASS__, 'version_3_notice' ) ); } /** * Get all notices to show. * * @since 3.0.0 */ public static function get_notices() { $notices_to_display = array(); $current_user_id = get_current_user_id(); if ( $current_user_id ) { $notices = apply_filters( 'wpupg_admin_notices', array() ); $dismissed_notices = get_user_meta( $current_user_id, 'wpupg_dismissed_notices', false ); foreach ( $notices as $notice ) { // Set defaults. $notice = wp_parse_args( $notice, array( 'dismissable' => true, 'location' => false, 'capability' => false, )); // Check capability. if ( false !== $notice['capability'] && ! current_user_can( $notice['capability'] ) ) { continue; } // Only dismissable when ID is set. if ( ! isset( $notice['id'] ) ) { $notice['dismissable'] = false; } // Check if user has already dismissed notice. if ( false !== $notice['dismissable'] && in_array( $notice['id'], $dismissed_notices ) ) { continue; } $notices_to_display[] = $notice; } } return $notices_to_display; } /** * Check if a specific notice has been dismissed. * * @since 3.0.0 */ public static function is_dismissed( $id ) { $user_id = get_current_user_id(); $dismissed_notices = get_user_meta( $user_id, 'wpupg_dismissed_notices', false ); return in_array( $id, $dismissed_notices ); } /** * Show a notice to new users. * * @since 3.0.0 */ public static function new_user_notice( $notices ) { $count = wp_count_posts( WPUPG_POST_TYPE )->publish; if ( 1 > intval( $count ) ) { $notices[] = array( 'id' => 'new_user', 'title' => __( 'Welcome to WP Ultimate Post Grid', 'wp-ultimate-post-grid' ), 'text' => __( 'Not sure how to get started?', 'wp-ultimate-post-grid' ) . ' ' . __( 'Check out our documentation!', 'wp-ultimate-post-grid' ) . '', ); } return $notices; } /** * Show a notice about version 3.0.0. * * @since 3.0.0 */ public static function version_3_notice( $notices ) { $notice_id = 'version_3'; if ( ! self::is_dismissed( $notice_id ) ) { $has_old_version_grids = false; // Check all grids for version. $args = array( 'post_type' => WPUPG_POST_TYPE, 'post_status' => 'any', 'posts_per_page' => -1, ); $query = new WP_Query( $args ); $posts = $query->posts; foreach ( $posts as $post ) { $grid = WPUPG_Grid_Manager::get_grid( $post ); if ( version_compare( $grid->version(), '3.0.0', '<' ) ) { $has_old_version_grids = true; break; } } if ( $has_old_version_grids ) { $notices[] = array( 'id' => $notice_id, 'title' => __( 'WARNING: WP Ultimate Post Grid 3.0.0+', 'wp-ultimate-post-grid' ), 'text' => 'This is a major upgrade and we highly recommend you to test your grids. Learn more in our documentation!', ); } else { $user_id = get_current_user_id(); add_user_meta( $user_id, 'wpupg_dismissed_notices', $notice_id ); } } return $notices; } } WPUPG_Notices::init();