ivory_search = true; } if ( null !== $is ) { $this->opt = $is; } else { $old_opt = (array)get_option( 'add_search_to_menu' ); $this->opt = array_merge( $old_opt, (array)$new_opt ); } } /** * Gets the instance of this class. * * @return self */ public static function getInstance() { if ( ! ( self::$_instance instanceof self ) ) { self::$_instance = new self(); } return self::$_instance; } /** * Registers plugin settings fields. */ function register_settings_fields(){ add_settings_section( 'ivory_search_section', '', array( $this, 'search_to_menu_section_desc' ), 'ivory_search' ); add_settings_field( 'ivory_search_locations', __( 'Select Menu', 'ivory-search' ), array( $this, 'menu_locations' ), 'ivory_search', 'ivory_search_section' ); $menu_search_form = isset( $this->opt['menu_search_form'] ) ? $this->opt['menu_search_form'] : 0; if ( ! $menu_search_form ) { add_settings_field( 'ivory_search_posts', __( 'Post Types', 'ivory-search' ), array( $this, 'menu_post_types' ), 'ivory_search', 'ivory_search_section' ); } add_settings_field( 'ivory_search_form', __( 'Search Form', 'ivory-search' ), array( $this, 'menu_search_form' ), 'ivory_search', 'ivory_search_section' ); add_settings_field( 'ivory_search_style', __( 'Form Style', 'ivory-search' ), array( $this, 'menu_form_style' ), 'ivory_search', 'ivory_search_section' ); add_settings_field( 'ivory_search_title', __( 'Menu Title', 'ivory-search' ), array( $this, 'menu_title' ), 'ivory_search', 'ivory_search_section' ); add_settings_field( 'ivory_search_classes', __( 'Menu Classes', 'ivory-search' ), array( $this, 'menu_classes' ), 'ivory_search', 'ivory_search_section' ); add_settings_field( 'ivory_search_gcse', __( 'Google CSE', 'ivory-search' ), array( $this, 'menu_google_cse' ), 'ivory_search', 'ivory_search_section' ); add_settings_field( 'ivory_search_close_icon', __( 'Close Icon', 'ivory-search' ), array( $this, 'menu_close_icon' ), 'ivory_search', 'ivory_search_section' ); add_settings_section( 'ivory_search_settings', '', array( $this, 'settings_section_desc'), 'ivory_search' ); add_settings_field( 'ivory_search_header', __( 'Header', 'ivory-search' ), array( $this, 'header' ), 'ivory_search', 'ivory_search_settings' ); add_settings_field( 'ivory_search_footer', __( 'Footer', 'ivory-search' ), array( $this, 'footer' ), 'ivory_search', 'ivory_search_settings' ); add_settings_field( 'ivory_search_display_in_header', __( 'Mobile Display', 'ivory-search' ), array( $this, 'menu_search_in_header' ), 'ivory_search', 'ivory_search_settings' ); add_settings_field( 'ivory_search_css', __( 'Custom CSS', 'ivory-search' ), array( $this, 'custom_css' ), 'ivory_search', 'ivory_search_settings' ); add_settings_field( 'ivory_search_stopwords', __( 'Stopwords', 'ivory-search' ), array( $this, 'stopwords' ), 'ivory_search', 'ivory_search_settings' ); add_settings_field( 'ivory_search_synonyms', __( 'Synonyms', 'ivory-search' ), array( $this, 'synonyms' ), 'ivory_search', 'ivory_search_settings' ); add_settings_field( 'not_load_files', __( 'Not load files', 'ivory-search' ), array( $this, 'plugin_files' ), 'ivory_search', 'ivory_search_settings' ); add_settings_field( 'ivory_search_disable', __( 'Disable', 'ivory-search' ), array( $this, 'disable' ), 'ivory_search', 'ivory_search_settings' ); add_settings_field( 'ivory_search_default', __( 'Default Search', 'ivory-search' ), array( $this, 'default_search' ), 'ivory_search', 'ivory_search_settings' ); register_setting( 'ivory_search', 'ivory_search' ); } /** * Displays Search To Menu section description text. */ function search_to_menu_section_desc(){ _e( 'Use below options to display search in menu and configure it.', 'ivory-search' ); } /** * Displays Settings section description text. */ function settings_section_desc(){ echo ''; echo '
'; _e( 'Use below options to make sitewide changes in search.', 'ivory-search' ); } /** * Displays choose menu locations field. */ function menu_locations() { $html = ''; $menus = get_registered_nav_menus(); if ( ! empty( $menus ) ) { $check_value = ''; foreach ( $menus as $location => $description ) { if ( $this->ivory_search ) { $check_value = isset( $this->opt['menus'][ $location ] ) ? $this->opt['menus'][ $location ] : 0; } else { $check_value = isset( $this->opt['add_search_to_menu_locations'][ $location ] ) ? $this->opt['add_search_to_menu_locations'][ $location ] : 0; } $html .= '

'; $html .= '

'; } } else { $html = __( 'No navigation menu registered on your site.', 'ivory-search' ); } echo $html; ?> ' . __( 'Select menu here where you want to display search form.', 'ivory-search' ) . '

'; IS_Help::help_tooltip( $title, $content ); ?> false ); $posts = get_post_types( $args ); if ( ! empty( $posts ) ){ foreach ( $posts as $key => $post ) { $check_value = ( isset( $this->opt['add_search_to_menu_posts'][$key] ) && ! $this->ivory_search ) ? $this->opt['add_search_to_menu_posts'][ $key ] : 0; $check_value = isset( $this->opt['menu_posts'][$key] ) ? $this->opt['menu_posts'][ $key ] : $check_value; $html .= '

'; $html .= '

'; } } else { $html = __( 'No post types registered on your site.', 'ivory-search' ); } echo $html; ?> ' . __( 'Select post types here that you want to make searchable.', 'ivory-search' ) . '

'; IS_Help::help_tooltip( $title, $content ); ?> is_plan( 'pro' ) ? false : true; if ( $form_disable ) { $html .= '

'; $html .= IS_Admin::pro_link() . '

'; } else { $args = array( 'numberposts' => -1, 'post_type' => 'is_search_form' ); $posts = get_posts( $args ); if ( ! empty( $posts ) ) { $check_value = isset( $this->opt['menu_search_form'] ) ? $this->opt['menu_search_form'] : 0; $html .= '

'; if ( $check_value && get_post_type( $check_value ) ) { $html .= ' ' . esc_html__( "Edit", 'ivory-search' ) . ''; } else { $html .= ' ' . esc_html__( "Create New", 'ivory-search' ) . ''; } $html .= '

'; } } echo $html; ?> ' . __( 'Select search form that will control search performed using menu search.', 'ivory-search' ) . '

'; IS_Help::help_tooltip( $title, $content ); ?> __( 'Default', 'ivory-search' ), 'dropdown' => __( 'Dropdown', 'ivory-search' ), 'sliding' => __( 'Sliding', 'ivory-search' ), 'full-width-menu' => __( 'Full Width', 'ivory-search' ), 'popup' => __( 'Popup', 'ivory-search' ) ); $popup_disable = is_fs()->is_plan( 'pro' ) ? false : true; if ( empty( $this->opt ) || ( ! isset( $this->opt['add_search_to_menu_style'] ) && ! isset( $this->opt['menu_style'] ) ) ) { $this->opt['menu_style'] = 'default'; update_option( 'ivory_search', $this->opt ); } $html = ''; $check_value = isset( $this->opt['add_search_to_menu_style'] ) ? $this->opt['add_search_to_menu_style'] : 'default'; $check_value = isset( $this->opt['menu_style'] ) ? $this->opt['menu_style'] : $check_value; foreach ( $styles as $key => $style ) { $html .= '

'; $html .= ''; if ( $popup_disable && 'popup' === $key ) { $html .= IS_Admin::pro_link(); } $html .= '

'; } echo $html; ?> ' . __( 'Select form style for the search form displayed in the menu.', 'ivory-search' ) . '

'; IS_Help::help_tooltip( $title, $content ); ?> opt['add_search_to_menu_title'] = isset( $this->opt['add_search_to_menu_title'] ) ? $this->opt['add_search_to_menu_title'] : ''; $this->opt['menu_title'] = isset( $this->opt['menu_title'] ) ? $this->opt['menu_title'] : $this->opt['add_search_to_menu_title']; $html = ''; echo $html; ?> ' . __( 'Displays set menu title text in place of search icon displays in navigation menu.', 'ivory-search' ) . '

'; IS_Help::help_tooltip( $title, $content ); ?> opt['add_search_to_menu_classes'] = isset( $this->opt['add_search_to_menu_classes'] ) ? $this->opt['add_search_to_menu_classes'] : ''; $this->opt['menu_classes'] = isset( $this->opt['menu_classes'] ) ? $this->opt['menu_classes'] : $this->opt['add_search_to_menu_classes']; $html = ''; $html .= '
'; echo $html; ?> ' . __( 'Adds set classes in the search navigation menu item.', 'ivory-search' ) . '

'; IS_Help::help_tooltip( $title, $content ); ?> opt['add_search_to_menu_gcse'] = isset( $this->opt['add_search_to_menu_gcse'] ) ? $this->opt['add_search_to_menu_gcse'] : ''; $this->opt['menu_gcse'] = isset( $this->opt['menu_gcse'] ) ? $this->opt['menu_gcse'] : $this->opt['add_search_to_menu_gcse']; $html = ''; echo $html; ?> ' . __( 'Add only Google Custom Search( CSE ) search form code in the above text box that will replace default search form.', 'ivory-search' ) . '

'; IS_Help::help_tooltip( $title, $content ); ?> opt['add_search_to_menu_display_in_header'] ) ? $this->opt['add_search_to_menu_display_in_header'] : 0; $check_string = checked( 'add_search_to_menu_display_in_header', $check_value, false ); if ( $this->ivory_search ) { $check_value = isset( $this->opt['header_menu_search'] ) ? $this->opt['header_menu_search'] : 0; $check_string = checked( 'header_menu_search', $check_value, false ); } $html = ''; $html .= ''; $html .= '
'; $check_value = isset( $this->opt['astm_site_uses_cache'] ) ? $this->opt['astm_site_uses_cache'] : 0; $check_string = checked( 'astm_site_uses_cache', $check_value, false ); if ( $this->ivory_search ) { $check_value = isset( $this->opt['site_uses_cache'] ) ? $this->opt['site_uses_cache'] : 0; $check_string = checked( 'site_uses_cache', $check_value, false ); } $html .= '
'; $html .= ''; $html .= '
'; echo $html; } /** * Disables search functionality on whole site. */ function disable() { $check_value = isset( $this->opt['disable'] ) ? $this->opt['disable'] : 0; $disable = checked( 1, $check_value, false ); $html = ''; $html .= ''; echo $html; } /** * Controls default search functionality. */ function default_search() { $check_value = isset( $this->opt['default_search'] ) ? $this->opt['default_search'] : 0; $disable = checked( 1, $check_value, false ); $html = ''; $html .= ''; echo $html; } /** * Displays search form in site header. */ function header() { $html = ''; $args = array( 'numberposts' => -1, 'post_type' => 'is_search_form' ); $posts = get_posts( $args ); if ( ! empty( $posts ) ) { $check_value = isset( $this->opt['header_search'] ) ? $this->opt['header_search'] : 0; $html .= ''; if ( $check_value && get_post_type( $check_value ) ) { $html .= ' ' . esc_html__( "Edit", 'ivory-search' ) . ''; } else { $html .= ' ' . esc_html__( "Create New", 'ivory-search' ) . ''; } $html .= '
'; } echo $html; } /** * Displays search form in site footer. */ function footer() { $html = ''; $args = array( 'numberposts' => -1, 'post_type' => 'is_search_form' ); $posts = get_posts( $args ); if ( ! empty( $posts ) ) { $check_value = isset( $this->opt['footer_search'] ) ? $this->opt['footer_search'] : 0; $html .= ''; if ( $check_value && get_post_type( $check_value ) ) { $html .= ' ' . esc_html__( "Edit", 'ivory-search' ) . ''; } else { $html .= ' ' . esc_html__( "Create New", 'ivory-search' ) . ''; } $html .= '
'; } echo $html; } /** * Displays search form close icon field. */ function menu_close_icon() { $check_value = isset( $this->opt['add_search_to_menu_close_icon'] ) ? $this->opt['add_search_to_menu_close_icon'] : 0; $check_string = checked( 'add_search_to_menu_close_icon', $check_value, false ); if ( $this->ivory_search ) { $check_value = isset( $this->opt['menu_close_icon'] ) ? $this->opt['menu_close_icon'] : 0; $check_string = checked( 'menu_close_icon', $check_value, false ); } $html = ''; $html .= ''; echo $html; } /** * Displays custom css field. */ function custom_css() { $this->opt['add_search_to_menu_css'] = isset( $this->opt['add_search_to_menu_css'] ) ? $this->opt['add_search_to_menu_css'] : ''; $this->opt['custom_css'] = isset( $this->opt['custom_css'] ) ? $this->opt['custom_css'] : $this->opt['add_search_to_menu_css']; $html = ''; $html .= '
'; echo $html; } /** * Displays stopwords field. */ function stopwords() { $this->opt['stopwords'] = isset( $this->opt['stopwords'] ) ? $this->opt['stopwords'] : ''; $html = ''; $html .= '
'; echo $html; ?> ' . __( 'Enter words here to add them to the list of stopwords. The stopwords will not be searched.', 'ivory-search' ) . '

'; IS_Help::help_tooltip( $title, $content ); ?> opt['synonyms'] = isset( $this->opt['synonyms'] ) ? $this->opt['synonyms'] : ''; $html = ''; $html .= '
'; $synonyms_disable = is_fs()->is_plan( 'pro' ) ? '' : ' disabled '; $check_value = isset( $this->opt['synonyms_and'] ) ? $this->opt['synonyms_and'] : 0; $disable = checked( 1, $check_value, false ); $html .= '

'; $html .= ''; if ( '' !== $synonyms_disable ) { $html .= IS_Admin::pro_link(); } echo $html; ?> ' . __( 'Add synonyms here to make the searches find better results.', 'ivory-search' ) . '

'; $content .= '

' . __( 'If you add bird = crow to the list of synonyms, searches for bird automatically become a search for bird crow and will thus match to posts that include either bird or crow.', 'ivory-search' ) . '

'; $content .= '

' . __( 'This only works for search forms and in OR searches. In AND searches the synonyms only restrict the search, as now the search only finds posts that contain both bird and crow.', 'ivory-search' ) . '

'; IS_Help::help_tooltip( $title, $content ); ?> __( 'Plugin CSS File', 'ivory-search' ), 'js' => __( 'Plugin JavaScript File', 'ivory-search' ) ); $html = ''; foreach ( $styles as $key => $file ) { $check_value = isset( $this->opt['do_not_load_plugin_files'][ "plugin-$key-file"] ) ? $this->opt['do_not_load_plugin_files'][ "plugin-$key-file" ] : 0; $check_string = checked( "plugin-$key-file", $check_value, false ); if ( $this->ivory_search ) { $check_value = isset( $this->opt['not_load_files'][ $key] ) ? $this->opt['not_load_files'][ $key] : 0; $check_string = checked( $key, $check_value, false ); } $html .= ''; $html .= ''; if ( 'css' == $key ) { $html .= '
'; $html .= '
' . plugins_url( '/public/css/ivory-search.css', IS_PLUGIN_FILE ) . ''; $html .= '

'; } else { $html .= '
'; $html .= '
' . plugins_url( '/public/js/ivory-search.js', IS_PLUGIN_FILE ) . ''; $html .= '
' . plugins_url( '/public/js/is-highlight.js', IS_PLUGIN_FILE ) . ''; } } echo $html; } }