У меня есть форма, в которой я перечисляю все условия, связанные с сообщениями, в виде флажков, пользователь должен выбрать несколько из них, нажать поиск и получить все сообщения, соответствующие всем выбранным условиям. Это отлично работает, когда есть сообщения, соответствующие критериям поиска. Мой вопрос заключается в том, как отображать сообщения, в которых есть всего несколько совпадающих терминов, и как сортировать результаты по количеству совпадений. Любая помощь горячо приветствуется. Спасибо.
Итак, это форма внутри страницы поиска:
<form action="<?php bloginfo('template_url') ?>/build_search.php" method="post" accept-charset="utf-8">
<?php $terms = get_terms( 'my_tax' );
$checkboxes = '';
foreach($terms as $term) :
$checkboxes .='<input type="checkbox" name="term[]" value="'.$term -> slug.'" id="term-'.$term->term_id.'" /><label for="term-'.$term->term_id.'">'.$term->name.'</label>';
endforeach;
print $checkboxes;
?>
<input id="submit" type="submit" value="Search">
Это то, что я поместил в файл build_search.php
if (isset($_POST["term"])){ $terms_array = array(); $terms_array = $_POST["term"]; foreach ($terms_array as $key => $value) { $string .= $value.'+'; } $terms_string = substr($string, 0, -1); $term = $terms_string; } else { $term = ""; } $url = header("Location:/?my_tax=$term");
после этого у меня есть только taxonomy-my_tax.php с обычным циклом.
каков ваш поисковый запрос/фильтр?
Поиск выводит это в (Расположение:/?my_tax=cat1+cat2+cat3+cat4) После этого оно отображается с помощью taxonomy-my_tax.php. Мне нужен способ показать все сообщения от cat1, cat2, cat3, cat4 и упорядочить их в зависимости от того, насколько совпадают категории.
Вы уверены, что результаты вашего поиска отображаются с помощью taxonomy-my_tax.php?
Да, и все работает нормально, я получаю посты, которые соответствуют ВСЕМ терминам, теперь мне нужно получить все посты, которые соответствуют ЛЮБОМУ из терминов, и упорядочить их по количеству совпавших терминов.
Спасибо за ответ, была ошибка,
//check and count matchs foreach ($current_post_terms as $t){ if (in_array($t,$searched_tags){ $matchs = $matchs + 1; } } $result['m'] = $matchs;
я ее исправил, но она все еще не работает, я должен поместить этот код в таксономию-my_tax.php, верно?Это пример!!! Мне нужно увидеть полный код формы поиска и файла таксономии, чтобы лучше понять
Извините, я должен добавить код с самого начала.
видя ваш код, я думаю, что знаю, в чем проблема, измените
$searched_tags = $_post['my_tax'];
его,$searched_tags = $_GET['my_tax'];
и да, весь код должен быть в вашем таксономии-my_tax.phpДа, это было так, теперь я получаю выбранные термины, когда я повторяю $searched_tags, но затем цикл прерывается.
Ну, единственный способ, который я могу придумать, — это создать двухмерный массив результатов, которые вы хотите вывести, и количество соответствующих тегов.
так например:
это не проверено, поэтому попробуйте и сообщите.