Wordpress фильтр сообщений по тегам - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь отфильтровать записи по тегам.

Сообщения со всеми тегами доступны по умолчанию.Но пользователь может увеличивать и уменьшать количество тегов в фильтре.

Каков наилучший способ публикации сообщений таким способом?Должен ли я считать все пропущенные теги и работать с аргументами URL или есть более простой способ?

$args  =
        array(
             'tag'        => $tags_arr, //array('sport', 'art', 'news')
         );
$posts_by_tags = get_posts( $args );
foreach ( $posts_by_tags as $post_by_tags ){
  echo '<li>' . $post_by_tags->post_title . '</li>';
}

UPD:

Я решил сделать ссылки вроде:

<ul>
	<li><a href="?tags=apples,oranges">Bananas</a></li>
	<li><a href="?tags=bananas,oranges">Apples</a></li>
	<li><a href="?tags=apples,bananas">Oranges</a></li>
</ul>

PHP:

$tags = array();
foreach ( get_tags() as $before_tag ) {
    $tags[] = $before_tag->name;
}
if ( isset( $_REQUEST['tags'] ) && $_REQUEST['tags'] != '' && $_REQUEST['tags'] != null ) {
    $filter_tags = explode( ',', $_REQUEST['tags'] );
} else {
    $filter_tags = $tags;
}
$args =
    array(
        'tag'         => $filter_tags,
    );
$posts_by_tags = get_posts( $args );
$each_sixth    = 1;
foreach ( $posts_by_tags as $post_by_tags ){
    // do stuff
    echo get_the_title( $post_by_tags->ID );
}

1 Ответ

0 голосов
/ 11 сентября 2018

Попробуйте это,

$ query = new WP_Query (массив ('posts_per_page = -1', массив ('tag' => массив ($ tags_arr))));

(ИЛИ)

$ args = array ('posts_per_page' => 5, 'tag' => $ tags_arr);

$ wp_query = new WP_Query ($ args);

После зацикливания ваших сообщений .. ..

Окончательно сбросьте данные сообщений - wp_reset_postdata ();

...