web-dev-qa-db-fra.com

Catégorie WordPress & boucle de taxonomie avec pagination

J'ai deux taxonomies appartenant au même type de message (posts).

Adventure - appartenant à la catégorie taxonomie Adventure - appartenant à la taxonomie de type vacances

Je veux lancer deux requêtes:

$args = array(
            'post_type' => 'post',
            'tax_query' => array(
            'relation' => 'OR',
                array(
                    'taxonomy' => 'holiday-types',
                    'field'    => 'slug',
                    'terms'    => 'adventure',
                ),
                array(
                    'taxonomy' => 'category',
                    'field'    => 'slug',
                    'terms' => 'adventure',
                ),  
            ),

        );
        $the_query = new WP_Query( $args );

Même si les termes sont les mêmes, différents messages leur sont associés.

Cette requête renvoie uniquement les publications contenant la taxonomie de type vacances et non la taxonomie de catégorie. Si je commente le tableau avec les types de vacances, la catégorie de taxonomie affiche les publications pertinentes.

J'ai besoin d'eux pour montrer ensemble ainsi que avec la pagination.

'paged' => get_query_var('paged')

J'ai lu que je dois ajouter ceci au premier tableau, mais je suppose que je ne peux pas le tester jusqu'à ce que la boucle fonctionne correctement en premier.

Des idées où je me trompe s'il vous plaît?


D'accord. Je suis quelque part avec cela maintenant, mais la pagination ne fonctionne pas. Il passe à une page 404 lorsque vous cliquez sur les autres pages, par exemple. 2, 3, 4. Qu'est-ce qui me manque?

global $query_string;
$myquery = wp_parse_args($query_string);
$myquery = array(
    'paged' => $paged,
    'numberposts'=>-1,
    'tax_query' => array(
        'relation' => 'OR',
        array(
            'taxonomy' => 'category',
            'terms' => array('adventure'),
            'field' => 'slug',

        ),
        array(
            'taxonomy' => 'holiday-types',
            'terms' => array('adventure'),
            'field' => 'slug',
        ),        
    ),
 );
query_posts($myquery);

while ( have_posts() ) : the_post();
    echo '<li>';
    the_title();
    echo '</li>';
endwhile;

// Reset Query
wp_pagenavi();
wp_reset_query();   
3
user1682743

N'utilisez pas 'numberposts'=>-1 car numberposts est obsolète. De plus, -1 affiche tout le message sur une seule page.

Utilisez plutôt posts_per_page et définissez sa valeur en fonction du nombre de publications que vous souhaitez.

$paged= (get_query_var('paged' )) ? get_query_var('paged'):1; 
global $query_string;
$myquery = wp_parse_args($query_string);
$myquery = array(
    'paged' => $paged,
    'posts_per_page'=>10,
    'tax_query' => array(
        'relation' => 'OR',
        array(
            'taxonomy' => 'category',
            'terms' => array('adventure'),
            'field' => 'slug',

        ),
        array(
            'taxonomy' => 'holiday-types',
            'terms' => array('adventure'),
            'field' => 'slug',
        ),        
    ),
 );
query_posts($myquery);

while ( have_posts() ) : the_post();
    echo '<li>';
    the_title();
    echo '</li>';
endwhile;

// Reset Query
wp_pagenavi();
wp_reset_query(); 
1
terminator