поиск по нескольким категориям - PullRequest
0 голосов
/ 07 февраля 2020

Мне нравится искать слово в уникальных нескольких категориях.

Я подготовил этот код.

<form role="search" class="cat-search" action="<?php bloginfo('url'); ?>" method="get">

<input type="checkbox" value="0" name="cat" id="cat0" /><label for="cat0">all categories</label>
<input type="checkbox" value="1" name="cat" id="cat1" /><label for="cat1">category 1</label>
<input type="checkbox" value="2" name="cat" id="cat2" /><label for="cat2">category 2</label>
<input type="checkbox" value="3" name="cat" id="cat3" /><label for="cat2">category 3</label>
<input type="checkbox" value="4" name="cat" id="cat4" /><label for="cat2">category 4</label>
<input type="checkbox" value="5" name="cat" id="cat5" /><label for="cat2">category 5</label>  

<input name="s" size="25" type="text" placeholder="search after select categories" />
<input type="submit" class="cat-search" value="search" />

</form>

Когда я пытаюсь найти слово в категориях 1 и 2, URL-адрес становится таким.

/? cat = 1 & cat = 2 & s = word

Есть ли способ изменить его на этот URL?

/? cat = 1,2 & s = слова

1 Ответ

1 голос
/ 07 февраля 2020

jQuery Удобно с этим,

удаляет атрибуты имени на всех этих флажках и добавляет скрытый ввод для cat, затем заполняет его значение на основе флажков

<form role="search" class="cat-search" action="<?php bloginfo('url'); ?>" method="get">
    <input type="checkbox" value="0" id="cat0" class="cats"/><label for="cat0">all categories</label>
    <input type="checkbox" value="1" id="cat1" class="cats"/><label for="cat1">category 1</label>
    <input type="checkbox" value="2" id="cat2" class="cats"/><label for="cat2">category 2</label>
    <input type="checkbox" value="3" id="cat3" class="cats"/><label for="cat3">category 3</label>
    <input type="checkbox" value="4" id="cat4" class="cats"/><label for="cat4">category 4</label>
    <input type="checkbox" value="5" id="cat5" class="cats"/><label for="cat5">category 5</label>  
    <input type="hidden" id="cat" name="cat" />
    <input name="s" size="25" type="text" placeholder="search after select categories" />
    <input type="submit" class="cat-search" value="search" />

</form>

Тогда ваш jQuery чтобы присвоить значение скрытым входам, когда флажки установлены

$('body').on('click', '.cats', function() {
    var cats = $('.cats:checked').map( function() {
        return this.value;
    }).get().join(",");
    $('#cat').val( cats );
});

Просто примечание, запятая (,) в URL будет закодирована и будет выглядеть примерно так:

yoursite.com/?cat=0%2C1%2C2%2C3%2C4&s=bah 

хотя это не должно иметь значения, если вы обрабатываете значение на php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...