web-dev-qa-db-fra.com

Type de message personnalisé dans la boucle sur la page d'accueil (modèle de page)

J'essaie de réaliser quelque chose avec la boucle et le CPT. J'ai créé un modèle de page qui sera la page d'accueil de mon site Web affichant des articles et des vidéos (le CPT). Comment puis-je ajouter le CPT dans une boucle afin qu'il affiche les deux dans l'ordre dans une sorte de flux?

J'ai ajouté l'extrait de code ci-dessous à functions.php:

// Custom loop feed
add_action( 'pre_get_posts', 'add_my_post_types_to_query' );

function add_my_post_types_to_query( $query ) {
    if ( is_home() && $query->is_main_query() )
        $query->set( 'post_type', array( 'post', 'videos' ) );
    return $query;
}

Et puis mettez le code de la boucle dans mon homepage.php.

La chose est, il l'affiche sur la page de mon blog, mais sur ma page d'accueil, il a publié un post pour la page d'accueil.

enter image description here

Y a-t-il quelque chose que j'ai mal fait?

1
Laurent

Il y a plusieurs façons d'accomplir ce que vous essayez de faire. La première chose, la plus simple que je puisse essayer, est de remplacer votre appel à is_home() par is_ftont_page(). Lisez ici pour connaître la différence entre les deux.

Si cela ne résout pas votre problème, vous pouvez essayer d'appeler WP_query depuis votre code de modèle. Cela pourrait ressembler à quelque chose comme ça:

$query = new WP_query(
    array(
        'post_type' => array('post', 'videos'),
        'post_status' => 'publish',
        'order' => 'ASC'
    )
);
foreach ($query->posts as $post) {
    // Your display code here.
}

Il y a beaucoup de paramètres que vous pouvez modifier pour que la requête fonctionne exactement comme vous le souhaitez. Tout est là dans la documentation. Si vous choisissez cette voie, vous voudrez supprimer le hook 'pre_get_posts'.

J'espère que cela t'aides!

0
Mike D