web-dev-qa-db-fra.com

Utilisation de pré-objets pour cibler une requête dans la barre latérale

Je sais que pre_get_posts peut être utilisé pour cibler une requête sur le site principal, des types de publication personnalisés et des pages. Mais existe-t-il un moyen de cibler une requête dans une barre latérale? En ce moment, j'utilise 'is_page_template () `mais cela utilise uniquement la requête principale.

Code sur mon modèle functions.php:

function opby_query( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
    $query->set('tax_query', array(
    array('taxonomy' => 'category',
    'field' => 'slug',
    'terms' => array( 'podcast-control-daily' ),
    'operator'=> 'NOT IN'
    ),
    array('taxonomy' => 'post_format',
    'field' => 'slug',
    'terms' => array( 'post-format-status' ),
    'operator'=> 'NOT IN')
    )
    );
    $query->set( 'posts_per_page', 15 );
}
if ($query->is_page_template('sidebar.php')) {
    $query->set( 'tax_query', array(
    array('taxonomy' => 'category',
    'field' => 'slug',
    'terms' => array( 'podcast-control-daily' ),
    'operator'=> 'IN'
    )));
    $query->set( 'posts_per_page', 5 );
}
return $query;
}
add_action( 'pre_get_posts', 'opby_query' );

La barre latérale utilise la boucle par défaut:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

<?php the_title();?><br>

<?php endwhile; else : ?>
<?php endif; ?>
1
Gregory Schultz

Je pense que vous pouvez y parvenir en ajoutant un query var . Et puis vous pouvez utiliser quelque chose dans pre_get_posts comme ceci:

if ( get_query_var( 'your_var' ) ) {
    // do something
}
2
Beee