true, 'result_count' => 16, 'query_highlight' => false, 'post_types' => array( 'post', 'page', 'attachment' ), 'include_admin_pages' => true, 'include_terms' => true, 'include_comments' => true ); $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 page */ function admin_search_add_settings_page() { add_options_page( __( 'Admin Search Settings', 'admin-search' ), __( 'Admin Search', 'admin-search' ), 'manage_options', 'admin-search', 'admin_search_render_plugin_settings_page' ); } add_action( 'admin_menu', 'admin_search_add_settings_page' ); /* * 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' ); // 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( 'include_admin_pages', __( 'Admin Pages', 'admin-search' ), 'admin_search_setting_include_admin_pages', 'admin-search', 'admin_search_section_sources' ); add_settings_field( 'include_terms', __( 'Taxonomy', 'admin-search' ), 'admin_search_setting_include_terms', '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_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 not be triggered if an input field is in focus. The admin search can be opened anytime by clicking the search icon in the admin bar or 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' ) . "

"; } /* * 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 '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_terms' setting */ function admin_search_setting_include_terms() { echo "

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

"; }