Я работаю над исправлением формы поиска по умолчанию в WordPress. Я просто устанавливаю некоторые фильтры, чтобы пользователь выбирал, затем нажимал ок, чтобы искать с фильтром, и все работало нормально, кроме флажка тегов.
Я пробовал все это: тег (строка) - использовать тег slug. tag_id (int) - использовать идентификатор тега. tag__and (массив) - использовать идентификаторы тегов. tag__in (массив) - использовать идентификаторы тегов. tag__not_in (массив) - использовать идентификаторы тегов. tag_slug__and (array) - использовать теговые слагы. tag_slug__in (массив) - используйте теги slugs.
, но результаты совпадают.
Моя форма поиска в searchform.php
<form role="search" method="get" id="searchform" class="skytube-search-form" action="<?php echo home_url( '/' ); ?>">
<input type="search" placeholder="<?php esc_attr_e( 'Search for what you want...', 'aldoustech' ); ?>" value="<?php the_search_query(); ?>" name="s" id="s" onkeyup="search()">
<label for="order">الترتيب حسب التاريخ</label>
<select name="order">
<option <?php if ($_GET['order'] == 'ASC') { ?>selected="true" <?php }; ?>value="ASC">الأقدم</option>
<option <?php if ($_GET['order'] == 'DESC') { ?>selected="true" <?php }; ?>value="DESC">الأحدث</option>
</select>
<label for="posts_per_page">عدد النتائج المعروضة</label>
<select name="posts_per_page">
<option <?php if ($_GET['posts_per_page'] == '10') { ?>selected="true" <?php }; ?>value="10">10</option>
<option <?php if ($_GET['posts_per_page'] == '50') { ?>selected="true" <?php }; ?>value="50">50</option>
<option <?php if ($_GET['posts_per_page'] == '100') { ?>selected="true" <?php }; ?>value="100">100</option>
</select>
<label for="category_name">التصنيف</label>
<select name="category_name">
<option <?php if ($_GET['category_name'] == '') { ?>selected="true" <?php }; ?>value="">
الكل
</option>
<option <?php if ($_GET['category_name'] == 'مسلسلات-أنمي') { ?>selected="true" <?php }; ?>value="مسلسلات-أنمي">
مسلسلات أنمي
</option>
<option <?php if ($_GET['category_name'] == 'مسلسلات آسيوية') { ?>selected="true" <?php }; ?>value="مسلسلات آسيوية">
مسلسلات آسيوية
</option>
<option <?php if ($_GET['category_name'] == 'مسلسلات-الأنيميشن-و-الكرتون') { ?>selected="true" <?php }; ?>value="مسلسلات-الأنيميشن-و-الكرتون">
مسلسلات الأنيميشن و الكرتون
</option>
<option <?php if ($_GET['category_name'] == 'أفلام-أنمي') { ?>selected="true" <?php }; ?>value="أفلام-أنمي">
أفلام أنمي
</option>
<option <?php if ($_GET['category_name'] == 'أفلام آسيوية') { ?>selected="true" <?php }; ?>value="أفلام آسيوية">
أفلام آسيوية
</option>
<option <?php if ($_GET['category_name'] == 'أفلام-الأنيميشن-و-الكرتون') { ?>selected="true" <?php }; ?>value="أفلام-الأنيميشن-و-الكرتون">
أفلام الأنيميشن و الكرتون
</option>
</select>
<div>
<?php
if( $terms = get_terms( array(
'taxonomy' => 'post_tag',
'orderby' => 'name'
) ) ) :
foreach ( $terms as $term ) :
echo '<input type="checkbox" name="tag" value="' . $term->slug . '"' . (($_GET['tag'] == $term->slug)?'checked':"") . '> ' . $term->name;
endforeach;
endif;
?>
</div>
<input type="submit" id="searchsubmit" value="<?php esc_attr_e( 'Search', 'aldoustech' ); ?>">
</form>
Когда я выбираю некоторые изФильтры затем нажимают кнопку поиска, URL-адрес становится примерно таким.
http://localhost:8080/wordpress/?s=&order=ASC&posts_per_page=10&cat=3
, и когда я выбираю один тег, URL-адрес будет выглядеть следующим образом
http://localhost:8080/wordpress/?s=&order=ASC&posts_per_page=10&cat=3&tag=hello
Оба URL-адреса хороши, но когда я выбираю большечем один тег, URL стал таким.
http://localhost:8080/wordpress/?s=&order=ASC&posts_per_page=10&cat=3&tag=hello&tag=bye
Вы можете увидеть дубликат tag=hello&tag=bye
Эта форма не дает желаемый результат, потому что он должен быть похож наэто:
tag=hello+bye