suhov
пытаюсь реализовать на вордпрессе что то типа дьявольски упрощенного поиска по тегам наподобии такого
<form name="travel" action="сайт.ком" method="get">
<input type="checkbox" name="tag" value="тег1" checked="checked" />раз<br />
<input type="checkbox" name="tag" value="тег2" />два<br />
<input type="checkbox" name="tag" value="тег3" />три<br />
<input type="submit" value="OK" />
<input type="reset" value="Reset" />
</form>
ну то есть поставил галочки возле нужных меток чик и ему выдало то что нужно
но оно выдает запрос в таком формате
хттп//сайт.сом//?tag=тег1&тег2
то есть выдает все посты в которых встречается либо тот либо другой тег
а нужно что бы выдавало в таком формате
хттп//сайт.сом//?tag=тег1+тег2
то есть что бы выдавались посты в которых есть только оба тега (если только один из них то нафиг надо)
как такое можно реализовать ?
Yacc
1. Сделаем в папке темы новый шаблон страницы:
bar.php
<?php
/*
Template Name: bar
*/
get_header();
$tags = array();
if (isset($_GET['tags']) and count($_GET['tags']) > 0) {
$tags = $_GET['tags'];
}
?>
<form name="travel" action="foo">
<input type="checkbox" name="tags[1]" value="tag1" <?php checked(true, isset($tags[1])); ?> />tag1<br />
<input type="checkbox" name="tags[2]" value="tag2" <?php checked(true, isset($tags[2])); ?> />tag2<br />
<input type="submit" value="OK" />
</form>
<hr/>
<?php
if (count($tags) > 0) {
$query = new WP_Query(array('tag' => implode('+', $tags)));
if ($query->have_posts() ) {
while ($query->have_posts() ) {
$query->the_post();
?>
<a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a><br/>
<?php
}
}
else {
echo 'Nothing found';
get_search_form();
}
}
get_footer();
2. Сделаем в админке новую страницу, назовем ее foo и в качестве шаблона страницы выберем bar.
3. Зайдем по адресу site.com/foo и порадуемся.
4. Доделаем шаблон bar, думая о валидации формы и санитизации параметров и перестаем беспокоиться.