Skip to content
18 changes: 12 additions & 6 deletions includes/admin/load.php
Original file line number Diff line number Diff line change
Expand Up @@ -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' );
Expand Down