web-dev-qa-db-fra.com

Utiliser pre_get_posts pour définir les publications par page, comment puis-je?

J'essaie d'utiliser pre_get_posts pour définir des publications par page pour un seul terme dans une taxonomie. Une des choses qui me déconcerte, c'est de définir le terme auquel appliquer le pre_get_posts.

Voici mon code:

function filter_press_tax( $query ){
if( $query->query_vars['tax_query']['taxonomy'] == 'press' && $query->query_vars['tax_query']['terms'][0] == 'press' ):
    $query->query_vars['posts_per_page'] = 5;
    return;
endif;
}//end filter_press_tax

Je ne comprends pas très bien comment accéder à la taxonomie et au terme dans la requête $. Oui, la taxonomie et le terme ont le même nom. Est-ce une mauvaise idée? Je n'ai pas de requête personnalisée configurée sur le modèle taxonomy-press-press.php pour le paramètre 'tax_query'

Toute aide est appréciée! Merci

3
dkmojo

Vous êtes presque là mon pote. Essayez ceci cependant.

<?php
    add_action('pre_get_posts', 'filter_press_tax');

    function filter_press_tax( $query ){
        if( $query->is_tax('press') && $query->has_term('press')):
            $query->set('posts_per_page', 5);
            return;
        endif;
    }
?>

Vous pouvez utiliser n'importe quel argument conditionnel ou tout argument pouvant être passé à WP_Query pour tester votre condition ou définir une nouvelle valeur via pre_get_posts. Essayez également $query->get('taxonomy')/$query->get('term'). Et vérifiez this for $query et définissez les méthodes.

11
Rutwick Gangurde