diff --git a/includes/admin/load.php b/includes/admin/load.php index 80171061c1..fbe5478c54 100644 --- a/includes/admin/load.php +++ b/includes/admin/load.php @@ -77,22 +77,28 @@ function perflab_render_settings_page() { * @param string $hook_suffix The current admin page. */ function perflab_admin_pointer( $hook_suffix ) { - if ( ! in_array( $hook_suffix, array( 'index.php', 'plugins.php' ), true ) ) { - return; - } - // Do not show admin pointer in multisite Network admin or User admin UI. if ( is_network_admin() || is_user_admin() ) { return; } - $current_user = get_current_user_id(); - $dismissed = explode( ',', (string) get_user_meta( $current_user, 'dismissed_wp_pointers', true ) ); + $dismissed = array_filter( explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) ) ); if ( in_array( 'perflab-admin-pointer', $dismissed, true ) ) { return; } + if ( ! in_array( $hook_suffix, array( 'index.php', 'plugins.php' ), true ) ) { + + // Do not show on the settings page and dismiss the pointer. + if ( isset( $_GET['page'] ) && PERFLAB_SCREEN === $_GET['page'] && ( ! in_array( 'perflab-admin-pointer', $dismissed, true ) ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended + $dismissed[] = 'perflab-admin-pointer'; + update_user_meta( $current_user, 'dismissed_wp_pointers', implode( ',', $dismissed ) ); + } + + return; + } + // Enqueue pointer CSS and JS. wp_enqueue_style( 'wp-pointer' ); wp_enqueue_script( 'wp-pointer' );