# Bookmark Admin Screens in the Admin Bar

> Adds a star menu to the admin bar where each user can bookmark the admin screen they are on, such as a plugin's settings or a filtered list, and jump back to it from anywhere.

- Type: PHP
- Runs: Run everywhere
- Category: [Admin](https://wpide.com/library/category/admin/)
- Tags: admin-bar, bookmarks, productivity
- Author: WPIDE Team
- Installs: 0
- Updated: 2026-10-28
- Page: https://wpide.com/library/admin-bar-bookmarks/

## Code

```php
add_action( 'admin_bar_menu', function ( $admin_bar ) {
    if ( ! current_user_can( 'edit_posts' ) ) {
        return;
    }

    $bookmarks = (array) get_user_meta( get_current_user_id(), 'wpide_bookmarks', true );
    $bookmarks = array_filter( $bookmarks );
    $here      = is_admin() ? ( is_ssl() ? 'https://' : 'http://' ) . ( $_SERVER['HTTP_HOST'] ?? '' ) . ( $_SERVER['REQUEST_URI'] ?? '' ) : '';
    $here      = esc_url_raw( $here );

    $admin_bar->add_node( array(
        'id'    => 'wpide-bookmarks',
        'title' => '<span class="ab-icon dashicons dashicons-star-filled" style="margin-top:2px" aria-hidden="true"></span><span class="ab-label">Bookmarks</span>',
    ) );

    foreach ( $bookmarks as $i => $bookmark ) {
        $admin_bar->add_node( array(
            'id'     => 'wpide-bookmark-' . $i,
            'parent' => 'wpide-bookmarks',
            'title'  => esc_html( $bookmark['title'] ),
            'href'   => esc_url( $bookmark['url'] ),
        ) );
    }

    if ( $here ) {
        $saved = in_array( $here, wp_list_pluck( $bookmarks, 'url' ), true );
        $admin_bar->add_node( array(
            'id'     => 'wpide-bookmark-toggle',
            'parent' => 'wpide-bookmarks',
            'title'  => $saved ? 'Remove this page' : '+ Bookmark this page',
            'href'   => wp_nonce_url( add_query_arg( array(
                'action'   => 'wpide_bookmark',
                'wpide_bm' => $saved ? 'remove' : 'add',
                'url'      => rawurlencode( $here ),
                'title'    => rawurlencode( wp_strip_all_tags( ! empty( $GLOBALS['title'] ) ? $GLOBALS['title'] : 'Admin page' ) ),
            ), admin_url( 'admin-post.php' ) ), 'wpide_bookmark' ),
        ) );
    }
}, 90 );

add_action( 'admin_post_wpide_bookmark', function () {
    check_admin_referer( 'wpide_bookmark' );

    $url   = isset( $_GET['url'] ) ? esc_url_raw( wp_unslash( $_GET['url'] ) ) : '';
    $title = isset( $_GET['title'] ) ? sanitize_text_field( wp_unslash( $_GET['title'] ) ) : '';
    if ( ! $url || 0 !== strpos( $url, admin_url() ) ) {
        wp_die( 'Only admin screens can be bookmarked.', 400 );
    }

    $bookmarks = array_filter( (array) get_user_meta( get_current_user_id(), 'wpide_bookmarks', true ) );
    $bookmarks = array_values( array_filter( $bookmarks, function ( $bookmark ) use ( $url ) {
        return $bookmark['url'] !== $url;
    } ) );
    if ( isset( $_GET['wpide_bm'] ) && 'add' === $_GET['wpide_bm'] ) {
        $bookmarks[] = array( 'url' => $url, 'title' => $title ? $title : $url );
    }
    update_user_meta( get_current_user_id(), 'wpide_bookmarks', array_slice( $bookmarks, -15 ) );

    wp_safe_redirect( $url );
    exit;
} );
```

## Notes

Bookmarks are saved per user (up to 15); use "Remove this page" in the menu to delete one.

## How to use it

Install the free WPIDE plugin (https://wordpress.org/plugins/wpide/), find "Bookmark Admin Screens in the Admin Bar" in its snippet library and add it in one click; or create a new PHP snippet in WPIDE (or any code snippets plugin) and paste the code above. More snippets: https://wpide.com/library/
