WordPress как на ладони
wordpress jino

Фильтр и поиск вместе

есть стандартная форма поиска с добавлением фильтров "Точное совпадение" и язык ()

	<form role="search" method="get" id="searchform" action="<?php echo home_url( '/' ) ?>" >
	<label class="screen-reader-text" for="s">search: </label>
	<input type="text" placeholder="MIN word length 3 symbols" value="<?php $str = get_search_query(); echo  $str = str_replace(""", "", $str );   ?>" name="s" id="s" />
	<input type="submit" id="searchsubmit" value="search" />  

	<div style="clear: both;">

// ТОЧНОЕ СОВПАДЕНИЕ 
		<input type="checkbox" style="vertical-align: text-top;" name="exact-match" value="1" /> <b> Exact Match </b>

// ЯЗЫК
		<?php
		function get_terms_dropdown($taxonomies, $args){
			$myterms = get_terms($taxonomies, $args);
			$optionname = "language"; //CHANGE ME slug taxonomy 
			$emptyvalue = "";
			$output ="<select name='".$optionname."'><option selected='".$selected."' value='".$emptyvalue."'>Language</option>'";

			foreach($myterms as $term){
				$term_taxonomy=$term->language; //CHANGE ME slug taxonomy 
				$term_slug=$term->slug;
				$term_name =$term->name;
				$link = $term_slug;
				$output .="<option name='".$link."' value='".$link."'>".$term_name."</option>";
			}

			$output .="</select>";
			return $output;
		}

		$taxonomies = array('comix-language'); // CHANGE ME
		$args = array('order'=>'ASC','hide_empty'=>true);
		echo get_terms_dropdown($taxonomies, $args);

	?>

	</div>
	</form>

Суть вопроса

если в форме ничего не впишу то получим урл
site.ru/?s=&language=

если в форме впишут слово "поиск" то получим урл
site.ru/?s=поиск&language=

если в форме ничего не впишу и выберу язык то получим урл
site.ru/?s=&language=english

если выбран и язык и категория то
site.ru/?s=поиск&language=english

нужно чтоб

if (поиск пустой) {
человек остался на текущей страници - выполнилось якобы обновление
}
if ( поиск не пустой && не выбран язык ) {
Выполнился просто поиск, в урл отсутствовали слова "&language="
}
if ( поиск пустой && выбран язык) {
вывести категорию языка (заменить "?s=&language=english" на "?language/english/")
}
if ( выбран и поиск и язык) {
ничего не делать оставить все как есть (этот пункт работает автоматом )
}

сейчас работаю с фильтром четкое совпадение, если пользователь хочет найти все как написано

// четкое совпадение поиска 
function search_exact_match($query) {   
	if ($query->is_search && isset( $_GET['exact-match'] )   ) {
		$exact_match = '"' . get_search_query( s ) . '"';
		$query->set( 's', $exact_match) ;
	} else {
		return false;
		}
}
add_action('pre_get_posts', 'search_exact_match');

я подазриваю что через данный функционал можно поменять адреса URL под те что мне нужны и создать нужные условия, но я не знаю как подменять нужные совпадения

0
kolshix182 7 месяцев назад

Нет ответов на этот вопрос.

На вопросы могут отвечать только зарегистрированные пользователи. Регистрация. Вход.