.*?<', $str ) ) ); } /* * Convert hex color values to RGB values */ function admin_search_RGB( $hex ) { if ( $hex[ 0 ] == '#' ) $hex = substr( $hex, 1 ); if ( strlen( $hex ) == 3 ) { $hex = $hex[ 0 ] . $hex[ 0 ] . $hex[ 1 ] . $hex[ 1 ] . $hex[ 2 ] . $hex[ 2 ]; } return hexdec( $hex[ 0 ] . $hex[ 1 ] ) . ' ' . hexdec( $hex[ 2 ] . $hex[ 3 ] ) . ' ' . hexdec( $hex[ 4 ] . $hex[ 5 ] ); } /* * Add plugin assets */ function admin_search_load_plugin_assets() { if ( isset( $_GET[ 'admin_search_preview' ] ) && $_GET[ 'admin_search_preview' ] ) { add_filter( 'show_admin_bar', '__return_false' ); wp_register_script( 'admin-search-preview-script', '', array(), ADMIN_SEARCH_VERSION, true ); wp_enqueue_script( 'admin-search-preview-script' ); wp_add_inline_script( 'admin-search-preview-script', "window.parent.postMessage({display:true},'" . get_site_url() . "');" ); } if ( ! is_user_logged_in() ) { return; } if ( ! current_user_can( 'edit_others_pages' ) ) { return; } if ( ! is_admin() && ! admin_search_setting( 'show_when_viewing_site' ) ) { return; } if ( ! is_admin_bar_showing() ) { return; } wp_enqueue_style( 'admin-search-stylesheet', plugin_dir_url( __FILE__ ) . 'assets/style.css', array(), ADMIN_SEARCH_VERSION ); wp_enqueue_script( 'jquery-ui-draggable' ); wp_enqueue_script( 'admin-search-script', plugin_dir_url( __FILE__ ) . 'assets/script.js', array( 'jquery', 'jquery-ui-draggable', 'wp-util', 'underscore' ), ADMIN_SEARCH_VERSION, array( 'in_footer' => true ) ); $formatted_menu = array(); if ( is_admin() ) { global $menu, $submenu; if ( current_user_can( 'manage_options' ) ) { foreach ( $menu as $menu_item ) { if ( ! $menu_item[ 0 ] ) { continue; } $menu_item_name = admin_search_sanitize_menu_name( $menu_item[ 0 ] ); $menu_item_title = $menu_item_name; $menu_item_url = $menu_item[ 2 ]; if ( isset( $submenu[ $menu_item[ 2 ] ] ) ) { foreach ( $submenu[ $menu_item[ 2 ] ] as $submenu_item ) { if ( ! $submenu_item[ 0 ] ) { continue; } if ( ! current_user_can( $submenu_item[ 1 ] ) ) { continue; } $submenu_item_name = admin_search_sanitize_menu_name( $submenu_item[ 0 ] ); $submenu_item_title = $submenu_item_name; $submenu_item_url = $submenu_item[ 2 ]; if ( strpos( $submenu_item_url, '.php' ) === false ) { $submenu_item_url = 'admin.php?page=' . $submenu_item_url; } $formatted_menu[ $submenu_item[ 2 ] ] = array( 'edit_post_link' => admin_url( $submenu_item_url ), 'name' => strtolower( $submenu_item_name . ' ' . $menu_item_name ), 'title' => $submenu_item_title, 'status' => null ); if ( strpos( $submenu_item_name, $menu_item_name ) === false ) { $formatted_menu[ $submenu_item[ 2 ] ][ 'status' ] = $menu_item_name; } } continue; } if ( ! current_user_can( $menu_item[ 1 ] ) ) { continue; } if ( strpos( $menu_item_url, '.php' ) === false ) { $menu_item_url = 'admin.php?page=' . $menu_item_url; } $formatted_menu[ $menu_item[ 2 ] ] = array( 'edit_post_link' => admin_url( $menu_item_url ), 'name' => strtolower( $menu_item_name ), 'title' => $menu_item_title, 'status' => null ); } } } $script_data = array( 'site_url' => get_site_url(), 'ajax_url' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'admin-search' ), 'display_on_keypress' => (bool) admin_search_setting( 'display_on_keypress' ), 'autosearch' => (bool) admin_search_setting( 'autosearch' ), 'include_admin_pages' => (bool) admin_search_setting( 'include_admin_pages' ), 'show_suggestions' => (bool) admin_search_setting( 'show_suggestions' ), 'strings' => array( 'confirm_clear_searches' => __( 'This will clear all search history and suggestions will be reset. Are you sure you want to continue?', 'admin-search' ) ), 'menu' => $formatted_menu, 'admin_pages_label' => __( 'Admin Pages', 'admin-search' ), ); if ( admin_search_setting( 'show_suggestions' ) ) { global $wpdb; $table_name = $wpdb -> prefix . 'admin_search__searches'; $top_searches = $wpdb -> get_results( $wpdb -> prepare( "SELECT * FROM {$table_name} ORDER BY LENGTH(query) DESC, occurrences DESC, results DESC LIMIT 100" ) ); $script_data[ 'top_searches' ] = ! empty( $top_searches ) ? array_column( $top_searches, 'query' ) : array(); } $inline_script = 'var admin_search=' . wp_json_encode( $script_data ) . ';'; wp_add_inline_script( 'admin-search-script', $inline_script ); global $_wp_admin_css_colors; $inline_style = ""; if ( is_admin() && ! in_array( get_user_option( 'admin_color' ), array( 'light', 'modern' ) ) ) { $scheme = $_wp_admin_css_colors[ get_user_option( 'admin_color' ) ]; $inline_style .= ":root{--as-color-background:" . $scheme -> colors[ 1 ]; $inline_style .= ";--as-color-background-rgb:" . admin_search_RGB( $scheme -> colors[ 1 ] ); $inline_style .= ";--as-color-focus:" . $scheme -> colors[ 2 ]; $inline_style .= ";--as-color-focus-text:" . $scheme -> colors[ 3 ]; $inline_style .= ";--as-color-primary:" . $scheme -> icon_colors[ 'current' ]; $inline_style .= ";--as-color-primary-rgb:" . admin_search_RGB( $scheme -> icon_colors[ 'current' ] ); $inline_style .= "}@media (min-width:783px){:root{--as-color-background:" . $scheme -> colors[ 0 ]; $inline_style .= ";--as-color-background-rgb:" . admin_search_RGB( $scheme -> colors[ 0 ] ); $inline_style .= "}}"; } wp_add_inline_style( 'admin-search-stylesheet', $inline_style ); } add_action( 'admin_enqueue_scripts', 'admin_search_load_plugin_assets' ); add_action( 'wp_enqueue_scripts', 'admin_search_load_plugin_assets' ); /* * Add search button to admin bar */ function admin_search_add_wb_item( $admin_bar ) { if ( ! is_user_logged_in() ) { return; } if ( ! current_user_can( 'edit_others_pages' ) ) { return; } if ( ! is_admin() && ! admin_search_setting( 'show_when_viewing_site' ) ) { return; } if ( ! is_admin_bar_showing() ) { return; } $admin_bar -> add_menu( array( 'id' => 'admin-search-toggle', 'title' => '' . __( 'Search WordPress', 'admin-search' ) . '', 'href' => '#', 'meta' => array( 'title' => __( 'Search', 'admin-search' ), 'onclick' => 'admin_search_modal( { toggle : true } ); return false' ), ) ); } add_action( 'admin_bar_menu', 'admin_search_add_wb_item', 100 ); /* * Add search UI template compontents */ function admin_search_ui() { if ( ! is_user_logged_in() ) { return; } if ( ! current_user_can( 'edit_others_pages' ) ) { return; } if ( ! is_admin() && ! admin_search_setting( 'show_when_viewing_site' ) ) { return; } if ( ! is_admin_bar_showing() ) { return; } $loading_indicator = ''; ?>