Что я не так сделал по поиску по условиям Wordpress?

Здравствуйте.
Подскажите пожалуйста. Суть такова: Хочу сделать подбор шин по сайту, работаю на Woocommerce, фильтр сделал. 597d29780408405fad6c655410981c17.JPG
Подскажите как заставить его работать...
Вот код.
<table width="50%" align="center" class="styled-select2">
			
		<tbody><tr><td><div align="center"><h5>Ширина</h5></div>
		  <p>
				<select name="shirina_category">
                                <option value="0">-</option>
				<option value="125">125</option>
				<option value="135">135</option>
				<option value="145">145</option>
				<option value="155">155</option>
				<option value="165">165</option>
				<option value="175">175</option>
				<option value="185">185</option>
				<option value="195">195</option>
				<option value="205">205</option>
				<option value="215">215</option>
				<option value="225">225</option>
				<option value="235">235</option>
				<option value="245">245</option>
				<option value="255">255</option>
				<option value="265">265</option>
				<option value="275">275</option>
				<option value="285">285</option>
				<option value="295">295</option>
				<option value="305">305</option>
				<option value="315">315</option>
				<option value="325">325</option>
				<option value="335">335</option>
				<option value="345">345</option>
				<option value="355">355</option>
				<option value="365">365</option>
				<option value="375">375</option>
				<option value="385">385</option>
				<option value="390">390</option>
				<option value="395">395</option>
				<option value="400">400</option>
				<option value="425">425</option>
				<option value="500">500</option>
				<option value="530">530</option>
				<option value="6">6</option>
				<option value="6.5">6.5</option>
				<option value="7">7</option>
				<option value="7.5">7.5</option>
				<option value="8.15">8.15</option>
				<option value="8,25">8.25</option>
				<option value="9">9</option>
				<option value="9.5">9.5</option>
				<option value="10">10</option>
				<option value="11">11</option>
				<option value="11.2">11.2</option>
				<option value="12">12</option>
				<option value="13.6">13.6</option>
				<option value="14">14</option>
				<option value="14.9">14.9</option>
				<option value="15.5">15.5</option>
				<option value="16">16</option>
				<option value="16.5">16.5</option>
				<option value="16.9">16.9</option>
				<option value="17.5">17.5</option>
				<option value="18">18</option>
				<option value="18.4">18.4</option>
				<option value="20">20</option>
				<option value="20.5">20.5</option>
				<option value="21.3">21.3</option>
				<option value="30">30</option>
				<option value="31">31</option>
				<option value="32">32</option>
				<option value="33">33</option>
				<option value="35">35</option>
				<option value="37">37</option>
				<option value="38">38</option>
							</select>
				</p></td>
	
		
		<td><div align="center"><h5>Высота</h5></div>
		  <p>
				<select name="product_size2">
				<option value="0">-</option>
				<option value="7">7</option>
				<option value="9">9</option>
				<option value="9.5">9.5</option>
				<option value="10">10</option>
				<option value="10.5">10.5</option>
				<option value="11">11</option>
				<option value="11.5">11.5</option>
				<option value="12">12</option>
				<option value="12.5">12.5</option>
				<option value="13">13</option>
				<option value="13.5">13.5</option>
				<option value="14">14</option>
				<option value="14.5">14.5</option>
				<option value="20">20</option>
				<option value="25">25</option>
				<option value="30">30</option>
				<option value="35">35</option>
				<option value="40">40</option>
				<option value="45">45</option>
				<option value="50">50</option>
				<option value="55">55</option>
				<option value="60">60</option>
				<option value="65">65</option>
				<option value="70">70</option>
				<option value="75">75</option>
				<option value="80">80</option>
				<option value="85">85</option>
				<option value="90">90</option>
				<option value="95">95</option>
				<option value="105">105</option>
							</select>
				</p></td>
	
		
		<td><div align="center"><h5>Диаметр</h5></div>
		  <p>
			<select name="product_size3" >
                		<option value="0">-</option>
				<option value="8">8</option>
				<option value="9">9</option>
				<option value="10">10</option>
				<option value="12">12</option>
				<option value="13">13</option>
				<option value="14">14</option>
				<option value="15">15</option>
				<option value="16">16</option>
				<option value="17">17</option>
				<option value="18">18</option>
				<option value="19">19</option>
				<option value="20">20</option>
				<option value="21">21</option>
				<option value="22">22</option>
				<option value="24">24</option>
							</select>
				</p></td>
	      
		<form role="search" method="get" action="<?php echo esc_url( home_url( '/' ) ); ?>">
		<td><div align="center"><h5>Сезонность</h5></div>
		  <p>
		<select name="product_cat">
                <?php wp_list_categories( 'title_li=&taxonomy=product_cat&show_count=1' ); ?>
		<option value="0"><?php esc_attr_e( '-', 'maxstore' ); ?></option>
		<?php
                 $categories = get_categories( 'taxonomy=product_cat' );
                 foreach ( $categories as $category ) {
                 $option = '<option value="' . esc_attr( $category->category_nicename ) . '">';
                 $option .= esc_html( $category->cat_name );
                 $option .= ' (' . absint( $category->category_count ) . ')';
                 $option .= '</option>';
                 echo $option;
                  }
                    ?>
			</select>
				</p></td>
	</tr>
	<tr>
      <td colspan="4"><input type="submit" value="Подобрать" class="submit">
		      

					</td>
			
						</tr>
		</tbody></table>
  • Вопрос задан
  • 156 просмотров
Пригласить эксперта
Ответы на вопрос 2
Palych_tw
@Palych_tw
Типа веб-разработчик
"Что я не так сделал по поиску " - вы не сделали вообще ничего. Почему у вас ширина, высота и диаметр не в форме? Как вы хотите получить их значения при отправке формы? Почему они выводятся статикой, а не выбираются из существующих значений атрибутов? Где у вас обработка $_GET ? Вам нужно все селекты поместить в форму, action у формы на текущий адрес, в functions.php написать хук в pre_get_posts, где собирались бы данные из $_GET и строился бы запрос c meta_query с нужным вам отношением OR или AND. Я бы попробовал бы так. Но не рекомендую изобретать велосипедов. Есть несколько готовых плагинов. Например https://wordpress.org/plugins/woocommerce-ajax-filters/
Ответ написан
@fantomcik Автор вопроса
сделал так... но вид запроса получается к примеру такой: ./?filter1=205&filter2=50&height=R17&filter
а нужен такого типа /?s=215%2F55+R17&post_type=product подскажи как поправить...
<script type="text/javascript">
	// Описываем функцию, которая будет выполняться
	// при отправке формы:
	// form - ссылка на форму
	// filters - хеш фильтров и параметров
	function addFilters(form, filters) {

		// Получаем элемент нашего "фильтра"
		var filter_query = document.getElementsByName("filter")[0];
		
		// Очищаем:
		filter_query.value = "";
		
		// "Аналог" foreach из php:
		for (var i in filters) if (filters.hasOwnProperty(i)) {
			// Получаем фильтр по имени (первый элемент с таким именем):
			var filter = document.getElementsByName(i)[0];
			// Лучше делать проверку, что выбран не первый вариант:
			if (filter.selectedIndex > 0) {
				// Теперь добавляем нужный нам "параметр":
				filter_query.value += filters[i];
			}
		}
	}
</script>

<form method="get" onsubmit="addFilters (this, {'filter1''/','filter2','filter3'})" action="./?s=&post_type=product">
            <SELECT name="filter1" style="margin-top: 5px;">
              <option value="">Ширина </option>
                                      <option value="6.15">6.15</option>
                                        <option value="6.45">6.45</option>
                                        <option value="6.95">6.95</option>
                                        <option value="7">7</option>
                                        <option value="7.5">7.5</option>
                                        <option value="9">9</option>
                                        <option value="10">10</option>
                                        <option value="12">12</option>
                                        <option value="30">30</option>
                                        <option value="31">31</option>
                                        <option value="33">33</option>
                                        <option value="135">135</option>
                                        <option value="155">155</option>
                                        <option value="165">165</option>
                                        <option value="175">175</option>
                                        <option value="185">185</option>
                                        <option value="195">195</option>
                                        <option value="205">205</option>
                                        <option value="215">215</option>
                                        <option value="225">225</option>
                                        <option value="235">235</option>
                                        <option value="245">245</option>
                                        <option value="255">255</option>
                                        <option value="265">265</option>
                                        <option value="275">275</option>
                                        <option value="285">285</option>
                                        <option value="295">295</option>
                                        <option value="315">315</option>
                                        <option value="385">385</option>
            </SELECT>
			
            <SELECT name="filter2" style="margin-top: 5px;">
                                <option value="">Высота</option>
                                      <option value="9.5">9.5</option>
                                        <option value="10.5">10.5</option>
                                        <option value="12.5">12.5</option>
                                        <option value="35">35</option>
                                        <option value="40">40</option>
                                        <option value="45">45</option>
                                        <option value="50">50</option>
                                        <option value="55">55</option>
                                        <option value="60">60</option>
                                        <option value="65">65</option>
                                        <option value="70">70</option>
                                        <option value="75">75</option>
                                        <option value="80">80</option>
                                        <option value="85">85</option>
                                        <option value="90">90</option>
                                 </SELECT>

                        <select class="filter3" name="height">
                                    <option value="">Диаметр </option>
                                      <option value="12">12</option>
                                        <option value="12C">12C</option>
                                        <option value="13">13</option>
                                        <option value="13C">13C</option>
                                        <option value="14">14</option>
                                        <option value="14C">14C</option>
                                        <option value="15">15</option>
                                        <option value="15C">15C</option>
                                        <option value="16">16</option>
                                        <option value="16C">16C</option>
                                        <option value="R17">17</option>
                                        <option value="17.5">17.5</option>
                                        <option value="18">18</option>
                                        <option value="19">19</option>
                                        <option value="19.5">19.5</option>
                                        <option value="20">20</option>
                                        <option value="21">21</option>
                                        <option value="22">22</option>
                                        <option value="22.5">22.5</option>
                                    </select>
                           <input type="hidden" name="filter" value="" />
                       <input type="submit" value="Искать">
                      </form>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы