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