DimaLepel
@DimaLepel

Как передать переменную $tag в query_posts wordpress?

Добрый вечер. Пытаюсь на базе статьи 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 вручную, а не через переменную - все работает как надо. Помогите, уже три дня мучаю этот код(
  • Вопрос задан
  • 297 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы