Title: Filtrowanie WP_Query za pomocą formularza i stronicowanie
Last modified: 2016-08-05

---

# Filtrowanie WP_Query za pomocą formularza i stronicowanie

 *  [Bazan](https://pl.wordpress.org/support/users/bazan/)
 * (@bazan)
 * [13 lat, 1 miesiąc temu](https://pl.wordpress.org/support/topic/filtrowanie-wp_query-za-pomoca-formularza-i-stronicowanie/)
 * Witam,
 * Muszę zrobić filtrowanie swojego WP_Query wg termów taksonomii i niestety mam
   problem ze stronicowaniem wyników.
 * Do stronicowania używam wtyczki wp simple pagination.
 * Problem polega na tym, że dobrze pobiera wybrane taksonomie, i tworzy mi listę
   postów tylko z wybranych kilku kategorii, ale linki stronicowania prowadzą do
   złej strony, i nie potrafię w nich przepisać wartości wybranych kategorii, bo
   niestety link do następnej strony albo prowadzi do 404, albo do archiwum postów
   z wszystkich kategorii.
 * Post type = partnerzy, taksonomia = branza
 * Da się obejść bez javascriptu zeby stronicowanie dzialalo tak jak powinno czyli
   zeby w wynikach pokazywalo kolejne strony wybranych kilku kategorii.
 * Taki mam kod:
 *     ```
       <?php 
   
       	$taxes = array();
       	if (isset($_POST['terms'])) {
       		$taxes = $_POST['terms'];
       	}
   
       	?>
   
       	<div class="filter-container">
   
       		<form action="" method="post" class="filters-form">
   
       		<?php 	$terms = get_terms('branza',array('hide_empty'=>true));	?>
   
       		<?php foreach ($terms as $term): 
   
       			$name = $term->name;
       			$slug = $term->slug;
       			$id = $term->term_id;
   
       		?>
   
       			<span class="thefield">
       				<input type="checkbox" name="terms[]" id="term-<?php echo $id; ?>" value="<?php echo $slug; ?>" <?php if (in_array($slug,$taxes)) {echo 'checked="checked"';} ?>
       				>
       				<label for="term-<?php echo $id; ?>">
       					<?php echo $name ?>
       				</label>
       			</span>
   
       		<?php endforeach ?>
   
       		<div class="filter-buttons">
       			<input class="ico-reset filter-reset" type="reset" value="Wyczyść" />
       			<input class="ico-submit filter-submit" type="submit" value="Filtruj" />
       		</div>
       		</form>
   
       	</div>
   
       	<div class="query-results">
   
       		<?php
       		echo $paged;
       		if (sizeof($taxes) == 0) {
       			$taxes = false;
       		}
   
       		$args = array();
   
       		if ($taxes) {
       			$args = array(
       				'posts_per_page' => 2,
       				'post_type' => 'partnerzy',
       				'tax_query' => array(
       						'relation' => 'OR',
       						array(
       							'taxonomy' => 'branza',
       							'field' => 'slug',
       							'terms' => $taxes
       							),
       					),
   
       				'paged'=> $paged
       			);
       		} else {
       			$args = array(
       				'posts_per_page' => 2,
       				'post_type' => 'partnerzy',
       				'paged'=> $paged
       			);
       		} 
   
       		$temp = $wp_query;
   
       		$wp_query = new WP_Query($args);
   
       		?>
   
       		<?php if ( $wp_query->have_posts() ) : while (  $wp_query->have_posts() ) :  $wp_query->the_post(); ?>
   
       				<?php $www = get_field('www'); ?>
   
       			<article id="post-<?php the_ID();?>" <?php post_class('partnerzy-item'); ?> >
       					<?php if (has_post_thumbnail()): ?>
       						<div class="archive-thumb">
       							<a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('partner-thumb'); ?></a>
       						</div>
       					<?php endif; ?>
   
       					<h2 class="archive-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
   
       					<div class="archive-content">
       						<?php the_excerpt(); ?>
       					</div>
       					<div class="archive-more clearfix">
       						<?php if (!empty($www)): ?>
       							<a href="<?php echo $www; ?>" class="ico-link"><?php _e('strona www','medivite'); ?></a>
       						<?php endif; ?>
       						<a href="<?php the_permalink(); ?>" class="read-more"><?php _e('Czytaj dalej','medivite'); ?></a>
       					</div>
   
       			</article>
   
       		<?php endwhile; ?>
       		<div class="clearfix"></div>
       			<?php if (function_exists('wp_simple_pagination')): ?>
       				<?php wp_simple_pagination(); ?>
       			<?php endif ?>
       		<?php else: ?>
       			<h2><?php _e('Brak partnerów','medivite'); ?></h2>
       			<p><?php _e('Niestety w tej branży jeszcze nie ma partnerów. Chcesz dołączyć?','medivite'); ?></p>
       		<?php endif; ?>
   
       			<?php wp_reset_postdata(); ?>
   
       		<?php $wp_query = null; $wp_query = $temp; unset($temp);?> 	
   
       	</div>
       ```
   
 * Wcinam się w zmienna $wp_query po to żeby w ogóle wtyczka stronicowania działała.
 * Formularz działa metodą POST. Wolałbym GET, ale niestety nie potrafię zrobić 
   ładnego linku, i tworzy się kod typu …?terms=3&terms=6&terms=8, a wolalbym wtedy?
   terms=3,6,8
 * Jak to zrobic? Wtedy i stronicowanie łatwo by bylo dopisac do linkow stronicowania
   poprzez JS.
 * Calosc wyglada tak [http://scr.hu/5oi/mlmm8](http://scr.hu/5oi/mlmm8) 🙂

 Temat ‘Filtrowanie WP_Query za pomocą formularza i stronicowanie’ jest zamknięty
na nowe odpowiedzi.

## Tagi

 * [query filtrowanie wyniki wp_query taksonomie formularz](https://pl.wordpress.org/support/topic-tag/query-filtrowanie-wyniki-wp_query-taksonomie-formularz/)

 * W: [Zaawansowane](https://pl.wordpress.org/support/forum/zaawansowane/)
 * 0 odpowiedzi
 * 1 uczestnik
 * Ostatnia odpowiedź od: [Bazan](https://pl.wordpress.org/support/users/bazan/)
 * Ostatnia aktywność: [13 lat, 1 miesiąc temu](https://pl.wordpress.org/support/topic/filtrowanie-wp_query-za-pomoca-formularza-i-stronicowanie/)
 * Status: nierzwiązane

## Tematy

### Najbardziej popularne tematy

### Tematy bez odpowiedzi

### Wątki niezwiązane ze wsparciem

### Rozwiązane wątki

### Nierozwiązane tematy

### Wszystkie tematy
