Добрый вечер. Пытаюсь на базе статьи
wp-kama.ru/id_652/dinamicheskiy-arhiv-bloga-s-ispo... доработать фильтр, что бы вместе с категориями для фильтрации можно были использовать теги checkbox'ом.
Привожу код страницы темы
<?php get_header(); ?>
<style type="text/css" rel="stylesheet" >
#archive_browser > div { display: inline-block; padding-right: 10px; }
#archive_pot { min-height:150px; }
#archives_table { border-collapse:collapse; margin:15px 0 0 0; width:100%; }
#archives_table td { min-height:25px; padding:4px; border-top:1px solid #eee; border-bottom:1px solid #eee; }
</style>
<script type="text/javascript">
(function($){
$(function(){
$("#archive_browser").change(function(){
$("#archive_pot")
.empty()
.html("<div style='text-align:center; padding:30px;'><img src='<?php bloginfo('template_url') ?>/images/ajax-loader.gif' /></div>");
var dateArray = $("#month-choice").val().split("/");
var y = dateArray[3];
var m = dateArray[4];
var c = $("input[name='rad']:checked").val();
var chk_arr = [];
$.each($('.my-checkbox').filter(':checked'), function(k, v){
chk_arr.push(this.value);
});
var temp = chk_arr.join(',');
alert(temp);
$.post(
"<?php bloginfo('template_url') ?>/scripts/archive_getter.php",
{
year : y,
month : m,
cat : c,
tag : temp
},
function(data) {
$("#archive_pot").html(data).animate({ height: $("#archives_table").height()+40 });
}
);
});
});
})(jQuery)
</script>
<div id="archive_browser">
<div id="text"></div>
<div>
<h4>Месяцы</h4>
<select id="month-choice">
<option val="no-choice"> — </option>
<?php wp_get_archives(array(
'type' => 'monthly',
'format' => 'option'
)); ?>
</select>
</div>
<div>
<h4>Рубрики</h4>
<?php //wp_dropdown_categories('show_option_none= -- '); ?>
<?php echo do_shortcode('[cccategory_doctors2]'); ?>
</div>
<div>
<h4>Метки</h4>
<?php //wp_dropdown_categories('show_option_none= -- '); ?>
<?php echo do_shortcode('[cctags_doctors2]'); ?>
</div>
</div>
<div id='archive_pot'></div>
<?php get_footer(); ?>
Основной интерес представляет скрипт js, в котором идет получение переменных для обработчика.
Вот файл обработчика
<?php
// подгружаем среду WP
require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
// фильтруем POST данные, передаваемые этому файлу с Javascript
$year = htmlspecialchars(trim($_POST['year']));
$month = htmlspecialchars(trim($_POST['month']));
$cat = htmlspecialchars(trim($_POST['cat']));
$tag = trim($_POST['tag']);
?>
<table id="archives_table">
<?php
if( ($year=='') && ($month=='') && ($cat=='-1') && ($tag=='') ){
echo "<tr><td style='text-align: center; font-size: 15px; padding: 5px;'>Пожалуйста, выберите дату/категорию из списка выше.</td></tr>";
}
else
{
// Получаем данные с помощью query_posts
//query_posts("posts_per_page=-1&cat=$cat&tag__in=$tag&monthnum=$month&year=$year&post_type=doctors");
query_posts( array('posts_per_page' => '-1','cat' => $cat,'tag__in' => array($tag),'monthnum' => $month,'year' => $year,'post_type' => 'doctors',) );
// выводим данные в Цикле WordPress
if( have_posts() ){ while( have_posts() ){ the_post(); ?>
<tr>
<td><a href='<?php the_permalink(); ?>'><?php the_title(); ?></a></td>
<td><?php comments_popup_link(' ', '1 Комментарий', '% Комментариев'); ?></td>
<td><?php the_time('j.m.Y'); ?></td>
<td><?php echo $tag; ?></td>
</tr>
<?php
}}
else // Если постов нет
echo "<tr><td style='text-align: center; font-size: 15px; padding: 5px;'>Ничего не найдено.</td></tr>";
} ?>
</table>
Также он и выводит результаты.
Так вот в переменную $tag я забиваю значения (массив) выбранных чекбоксов, которые передаются в query_posts. И что самое интересное, идет фильтр только по первому значению массива, хотя в передаются все значения (если выбрано больше одного чекбокса), что выводится вот в этой строчке . Но если в query_posts прописать значения $tag вручную, а не через переменную - все работает как надо. Помогите, уже три дня мучаю этот код(