WordPress Filtrer les messages par tags

Publié par Jean-Michel le

J’essaie de filtrer les messages par tags.

Les publications avec tous les tags sont disponibles par défaut. Mais un utilisateur peut augmenter et diminuer le nombre de balises dans le filtre.

Quelle est la meilleure façon de poster un fichier de cette façon ? Dois-je compter toutes les balises omises et travailler avec des arguments d’URL ou existe-t-il un moyen plus simple ?

$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 :

J’ai décidé de faire des liens comme:

<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 );
}

Solution n°1 trouvée

Essaye ça,

$query=new WP_Query(array('posts_per_page=-1', array('tag' => array($tags_arr))));

(OU)

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

$wp_query = new WP_Query( $args );

Après avoir mis en boucle vos messages…

Enfin, réinitialisez les données de publication :

wp_reset_postdata();

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *