true, 'result_count' => 16, 'query_highlight' => false, 'show_when_viewing_site' => false, 'post_types' => array( 'post', 'page', 'attachment' ), 'taxonomies' => array( ), 'include_admin_pages' => false, 'include_comments' => false, 'include_users' => false, 'external_websites' => '' ); $settings = array(); if ( get_option( 'admin_search_settings' ) !== null ) { $settings = get_option( 'admin_search_settings' ); } foreach ( $default_settings as $default_setting_name => $default_setting_value ) { if ( ! isset( $settings[ $default_setting_name ] ) ) { $settings[ $default_setting_name ] = $default_setting_value; } } if ( isset( $settings[ $name ] ) ) { return $settings[ $name ]; } return null; } /* * Add plugin settings fields */ function admin_search_settings_init() { register_setting( 'admin_search', 'admin_search_settings', array( 'sanitize_callback' => 'admin_search_sanitize_setting_values' ) ); // General settings add_settings_section( 'admin_search_section_general', __( 'General', 'admin-search' ), '', 'admin-search' ); add_settings_field( 'display_on_keypress', __( 'Display on Keypress', 'admin-search' ), 'admin_search_setting_display_on_keypress', 'admin-search', 'admin_search_section_general' ); add_settings_field( 'result_count', __( 'Result Count', 'admin-search' ), 'admin_search_setting_result_count', 'admin-search', 'admin_search_section_general' ); add_settings_field( 'highlight_query', __( 'Query Highlighting', 'admin-search' ), 'admin_search_setting_highlight_query', 'admin-search', 'admin_search_section_general' ); add_settings_field( 'show_when_viewing_site', __( 'Show on Site', 'admin-search' ), 'admin_search_setting_show_when_viewing_site', 'admin-search', 'admin_search_section_general' ); // Source settings add_settings_section( 'admin_search_section_sources', __( 'Sources', 'admin-search' ), 'admin_search_section_sources_text', 'admin-search' ); add_settings_field( 'post_types', __( 'Post Types', 'admin-search' ), 'admin_search_setting_post_types', 'admin-search', 'admin_search_section_sources' ); add_settings_field( 'taxonomies', __( 'Taxonomies', 'admin-search' ), 'admin_search_setting_taxonomies', 'admin-search', 'admin_search_section_sources' ); add_settings_field( 'include_admin_pages', __( 'Admin Pages', 'admin-search' ), 'admin_search_setting_include_admin_pages', 'admin-search', 'admin_search_section_sources' ); add_settings_field( 'include_comments', __( 'Comments', 'admin-search' ), 'admin_search_setting_include_comments', 'admin-search', 'admin_search_section_sources' ); add_settings_field( 'include_users', __( 'Users', 'admin-search' ), 'admin_search_setting_include_users', 'admin-search', 'admin_search_section_sources' ); add_settings_field( 'external_websites', __( 'External Websites', 'admin-search' ), 'admin_search_setting_external_websites', 'admin-search', 'admin_search_section_sources' ); } add_action( 'admin_init', 'admin_search_settings_init' ); /* * Add plugin settings link to plugin item on Plugins page */ function admin_search_settings_page_link( $links ) { $links[] = '' . __( 'Settings', 'admin-search' ) . ''; return $links; } add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'admin_search_settings_page_link' ); /* * Render plugin settings page */ function admin_search_render_plugin_settings_page() { ?>

" . __( 'If enabled, the admin search will display instantly on keypress, it will not be displayed if an input field is in focus. The admin search can still be opened anytime by clicking the search icon in the admin bar or by pressing Ctrl + S or Command + S.', 'admin-search' ) . "

"; } /* * Set up 'result_count' setting */ function admin_search_setting_result_count() { $field = " " . __( 'Highlight matching keyword in search results', 'admin-search' ) . "

"; } /* * Set up 'show_when_viewing_site' setting */ function admin_search_setting_show_when_viewing_site() { echo "

"; } /* * Add 'sources' settings section summary copy */ function admin_search_section_sources_text() { echo '

' . __( 'Choose what appears in search results.', 'admin-search' ) . '

'; } /* * Set up 'post_types' setting */ function admin_search_setting_post_types() { echo "
"; foreach ( get_post_types( array(), 'object' ) as $post_type ) { if ( $post_type -> {'public'} ) { echo "

"; } } echo "
"; } /* * Set up 'taxonomies' setting */ function admin_search_setting_taxonomies() { echo "
"; foreach ( get_taxonomies( array(), 'object' ) as $taxonomy ) { if ( $taxonomy -> {'public'} ) { echo "

"; } } echo "
"; } /* * Set up 'include_admin_pages' setting */ function admin_search_setting_include_admin_pages() { echo "

" . __( 'Users will only see admin pages they have access to.', 'admin-search' ) . "

"; } /* * Set up 'include_comments' setting */ function admin_search_setting_include_comments() { echo "
"; } /* * Set up 'include_users' setting */ function admin_search_setting_include_users() { echo "
"; } /* * Set up 'external_websites' setting */ function admin_search_setting_external_websites() { echo "

" . __( 'Display links to external websites in search results. Use %q% in place of query. Separate multiple website URLs with line breaks.', 'admin-search' ) . "

Example: Add https://wordpress.org/search/%q% to allow users to view search results on the WordPress.org website.

"; }