id === 'settings_page_admin-search' ) { return '' . esc_attr__( 'Get support', 'admin-search' ) . ' | ' . str_replace( array( '[a rate]', '[a wp]', '[a donate]', '[/a]' ), array( '', '', '', '' ), __( '[a rate]Leave a review[/a] on [a wp]WordPress.org[/a] or [a donate]donate[/a] to support the plugin.', 'admin-search' ) ); } return $text; } ); add_filter( 'update_footer', function( $text ) { if ( get_current_screen() -> id === 'settings_page_admin-search' ) { return ' ' . sprintf( __( 'Plugin version %s', 'admin-search' ), ADMIN_SEARCH_VERSION ); } return $text; }, 15 ); } add_action( 'admin_menu', 'admin_search_add_settings_page' ); /* * Set default plugin settings and get user settings */ function admin_search_setting( $name, $fallback = NULL ) { $default_settings = array( 'display_on_keypress' => true, 'query_highlight' => false, 'show_when_viewing_site' => false, 'post_types' => array( 'post', 'page', 'attachment' ), 'taxonomies' => array( ), 'include_admin_pages' => true, 'include_comments' => false, 'include_users' => true, 'display_users_as' => 'username', 'external_websites' => '', 'result_count' => 10 ); $initiated = false; $settings = array(); if ( get_option( 'admin_search_settings' ) !== NULL ) { $initiated = true; $settings = get_option( 'admin_search_settings' ); } foreach ( $default_settings as $default_setting_name => $default_setting_value ) { if ( ! $initiated && ! isset( $settings[ $default_setting_name ] ) ) { $settings[ $default_setting_name ] = $default_setting_value; } } if ( isset( $settings[ $name ] ) ) { return $settings[ $name ]; } return $fallback; } /* * 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( '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( 'display_users_as', __( 'Display users as', 'admin-search' ), 'admin_search_setting_display_users_as', 'admin-search', 'admin_search_section_sources' ); add_settings_field( 'result_count', __( 'Result Limit', 'admin-search' ), 'admin_search_setting_result_count', '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() { ?>

get_names(); unset( $user_roles_names[ 'subscriber' ] ); if ( ! in_array( $input[ 'show_when_viewing_site' ], $user_roles_names ) ) { $input[ 'show_when_viewing_site' ] = 'editor'; } } // Validate 'post_types' setting if ( isset( $input[ 'post_types' ] ) ) { $post_types = array(); foreach ( $input[ 'post_types' ] as $post_type ) { if ( post_type_exists( $post_type ) ) { $post_types[] = $post_type; } } $input[ 'post_types' ] = $post_types; } // Validate 'taxonomies' setting if ( isset( $input[ 'taxonomies' ] ) ) { $taxonomies = array(); foreach ( $input[ 'taxonomies' ] as $taxonomy ) { if ( taxonomy_exists( $taxonomy ) ) { $taxonomies[] = $taxonomy; } } $input[ 'taxonomies' ] = $taxonomies; } // Validate 'include_admin_pages' setting if ( isset( $input[ 'include_admin_pages' ] ) ) { $input[ 'include_admin_pages' ] = 1; } else { $input[ 'include_admin_pages' ] = 0; } // Validate 'include_comments' setting if ( isset( $input[ 'include_comments' ] ) ) { $input[ 'include_comments' ] = 1; } else { $input[ 'include_comments' ] = 0; } // Validate 'include_users' setting if ( isset( $input[ 'include_users' ] ) ) { $input[ 'include_users' ] = 1; } else { $input[ 'include_users' ] = 0; } // Validate 'display_users_as' setting if ( ! in_array( $input[ 'display_users_as' ], array( 'username', 'full_name', 'nickname' ) ) ) { $input[ 'display_users_as' ] = 'username'; } // Validate 'external_websites' setting if ( isset( $input[ 'external_websites' ] ) ) { $external_websites = array(); foreach ( explode( "\r\n", $input[ 'external_websites' ] ) as $external_website ) { if ( filter_var( $external_website, FILTER_VALIDATE_URL ) ) { $external_websites[] = trim( $external_website ); } } $input[ 'external_websites' ] = implode( "\n", $external_websites ); } else { $input[ 'external_websites' ] = ''; } return $input; } /* * Set up 'display_on_keypress' setting */ function admin_search_setting_display_on_keypress() { echo "

" . __( 'When enabled, the Admin Search box will display instantly on keypress except when a text field is in focus. The Admin Search box can 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 keywords in the search results', 'admin-search' ) . "

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

" . __( 'When enabled, the Admin Search box will be accessible to admins when viewing the website.', '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 '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 'display_users_as' setting */ function admin_search_setting_display_users_as() { 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 the query value in the URL. Separate multiple website URLs with line breaks.', 'admin-search' ) . "

" . __( 'Example: Add https://wordpress.org/search/%q% to display a link to the WordPress.org search pre-populated with your search query.', 'admin-search' ) . "

"; }