web-dev-qa-db-fra.com

Les balises conditionnelles ne fonctionnent pas

J'essaie d'afficher différents modèles dans la page archive.php. Je dois charger différents articles en fonction du type de publication personnalisé. Voici mon code:

<?php if(is_singular('libri')) :?>

<?php 
// WP_Query arguments
$args = array (
    'post_type'              => 'libri',
);

// The Query
$query = new WP_Query( $args );

// The Loop
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        the_title();
    }
} else {
    // no posts found
}

// Restore original Post Data
wp_reset_postdata(); ?>

<?php else : ?>


<?php endif; ?>


<?php get_footer();?>

Quoi qu'il en soit, la page n'affiche rien. Comment puis-je me débarrasser de ce problème?

Merci!

1
Stefano

is_singular renverra false sur une page d'archive. Si vous voulez vérifier si vous êtes sur une archive pour un type d'article, vous pouvez utiliser is_post_type_archive( 'libri' ) ou vous pouvez créer un fichier archive-{post_type}.php qui, dans ce cas, serait archive-libri.php.

Références: https://codex.wordpress.org/Post_Type_Templateshttps://codex.wordpress.org/ Conditional_Tags # A_Single_Post_Page

2
czerspalace

Vous utilisez is_singular() qui ne retournera jamais true sur la page d'archive, comme @ Tom J Nowell souligné dans le commentaire. Donc, ce que vous devez faire pour que query s'exécute est de supprimer cette condition.

0
wscourge