Как фильтровать несколько таксономий с помощью переключателей

введите описание изображения здесь

К праву относятся таксономии, под ними разные термины, основанные на радиоприложении терминов ….. я должен фильтровать и отображать модели автомобилей …….

Живую работу можно найти здесь, перейдите по ссылке

Вот как вы это делаете,

<form name="filterby" action="" method="GET"> <input type="radio" name="cartype" value="bentley" OnChange="document.filterby.submit()" /> Bentley<br /> <input type="radio" name="cartype" value="bmw" OnChange="document.filterby.submit()"/> BMW <input type="radio" name="cartype" value="bugatti" OnChange="document.filterby.submit()"/> Bugatti </form> <?php $selection = $_GET['cartype']?$_GET['cartype']:'bentley'; $args = array_merge( $wp_query->query, array( 'post_type' => 'cars', 'taxonomy' => $selection, 'order' => desc ) ); query_posts( $args ); if (have_posts()) : while (have_posts()) : the_post(); ?> // do your desired output here <?php endwhile; endif; ?> 

Что происходит в этом коде?

Прежде всего, приведенная выше форма содержит ваши кнопки ввода радиосигнала, представляющие ваши желаемые автомобили или таксономии.

Вы заметите следующее:

OnChange="document.filterby.submit()"

… то, что это делает, представляет форму с помощью JavaScript, а не для того, чтобы иметь отдельную кнопку отправки для обработки выбора. Вы всегда можете удалить это вместо кнопки отправки, если хотите.

Сама форма использует метод GET вместо POST при обработке формы, так как мы хотим получить значение из пользовательского выбора и передать его в наш запрос / цикл.

После выбора значение $_GET['cartype'] сохраняется в переменной под названием $ selection. Затем мы используем эту переменную в нашем запросе и в этом случае передаем ее в свойство taxonomy в качестве таксономии, для которой мы хотим получить сообщения.

Вы заметите, что с его переменной $selection которую $_GET['cartype'] кажется, объявляется дважды. Это не ошибка, и давайте разложим переменную, чтобы понять, почему,

 $selection = $_GET['cartype'] // store the user selection ? // OR ELSE $_GET['cartype']:'bentley'; // show posts from *bentley* taxonomy by default 

Достаточно понятно, что если пользователь не вводит пользователя, например, когда пользователь впервые приземляется на эту страницу, они еще не сделали бы выделение из переключателей, тогда мы покажем список сообщений по умолчанию из требуемой таксономии, назначив таксономии …

$_GET['cartype']:'taxonomy_here'

… если бы не было имени таксономии, содержащегося в переменной $selection для которой мы переходим к нашему запросу. В свою очередь, наш запрос / цикл не будет давать никаких результатов до ввода. Это может вызвать нежелательный пользовательский интерфейс.

Хотя это необязательно, рекомендуется, если вы не используете более сложный цикл / запрос, для которого изменяются вещи в соответствии с вашим вкусом, в противном случае устанавливается таксономия по умолчанию, чтобы показывать автомобили (что может быть Aston Martin, если вы хотите перейти через буквенный алфавит заказ).

Все вышесказанное входит в файл шаблона, для которого управление вашим видом / макетом.

Надеюсь, это поможет вам.

Мне это понравилось …………….

 <?php function implement_ajaxaa() { if(isset($_GET['manu_catidd']) && isset($_GET['trans_catidd']) && isset($_GET['fuel_catidd'])) { $bodytype_arg = array( 'taxonomy' => 'bodytype', 'terms' => array($_GET['manu_catidd']), 'field' => 'slug', 'compare' => '==', ); if(isset($_GET['manu_catidd'])&& $GET['manu_catidd']=='undefined') { $bodytype_arg1 = ''; } else { $bodytype_arg1 =$bodytype_arg; } $transmission_arg = array( 'taxonomy' => 'transmission', 'terms' => array($_GET['trans_catidd']), 'field' => 'slug', 'compare' => '==', ); if(isset($_GET['trans_catidd']) && $GET['trans_catidd']=='undefined') { $transmission_arg1 = ''; } else { $transmission_arg1 =$transmission_arg; } $fueltype_arg=array( 'taxonomy' => 'fueltype', 'terms' => array($_GET['fuel_catidd']), 'field' => 'slug', 'compare' => '==', ); $args = array( 'post_type' => 'newcars','numberposts'=>20, 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'model', 'terms' => 'aston-martin', 'field' => 'slug', 'compare' => '==', ), $bodytype_arg1, $transmission_arg1, //$fueltype_arg ) ); $query = new WP_Query( $args ); while ( $query->have_posts() ) : $query->the_post(); echo '<li>'; echo '<a href="'; echo the_permalink(); echo '" >'; the_title(); echo '</a>'; echo '</li>'; endwhile; die(); } } add_action('wp_ajax_my_special_ajax_callab', 'implement_ajaxaa'); add_action('wp_ajax_nopriv_my_special_ajax_callab', 'implement_ajaxaa');//for users that are not logged in. ?> 

но получение сообщений – это то, что у меня есть проблема … больше изменений?