web-dev-qa-db-fra.com

Comment afficher toutes les publications standard de publication personnalisée dans une boucle avec pagination?

J'ai plusieurs messages standard et des messages d'un type personnalisé. Maintenant, je veux tous les afficher sur ma page d'accueil en utilisant une boucle. Mon problème est qu'il affiche les articles, y compris ceux du type d'article personnalisé, mais pas tous.

Types de messages que j'ai actuellement: 7 messages standard, 15 photos, 5 vidéos, 2 sites Web. Total de 29 messages.

Dans mes paramètres de lecture, j'ai configuré les pages de blogs pour qu'elles affichent au plus 6 messages. Maintenant, quand je vais à la page d'accueil, je peux voir ces 6 articles mélangés à différents types d'articles, mais il n'y a que 2 pages (la 2ème page contient également 6 articles). Sens, il y a seulement moins de 13 messages où il fait, j'ai 29 messages au total. Quand je vais sur website.com/page/3/ je reçois une erreur 404.

J'utilise le dernier framework FoundationPress pour mon thème WordPress et voici mon code

    <?php 
        $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
        $loop = new WP_Query(array(
            'post_type' => array('post', 'photo', 'video', 'web'),
            'posts_per_page' => get_option('posts_per_page'),
            'paged' => $paged
        ));
    ?>

        <?php while ( $loop -> have_posts() ) : $loop -> the_post(); ?>
            <?php get_template_part( 'content', get_post_format() ); ?>
        <?php endwhile; ?>

Juste pour référence, voici la fonction FoundationPress pour montrer la navigation

$paginate_links = paginate_links( array(
    'base' => str_replace( $big, '%#%', html_entity_decode( get_pagenum_link( $big ) ) ),
    'current' => max( 1, get_query_var( 'paged' ) ),
    'total' => $wp_query->max_num_pages,
    'mid_size' => 5,
    'prev_next' => true,
    'prev_text' => __( '&laquo;', 'foundationpress' ),
    'next_text' => __( '&raquo;', 'foundationpress' ),
    'type' => 'list',
) );
1
vanduzled

Vous n'avez pas besoin d'une requête personnalisée pour inclure des CPT dans les publications de page d'accueil dans des cas normaux. Il suffit d'utiliser pre_get_posts.

function wpse215208_include_all_cpt( $query ) {
    if ( is_home() && $query->is_main_query() ) {
        $query->set('post_type', array( 'post', 'photo', 'video', 'web' ) );
    }
}
add_action('pre_get_posts', 'wpse215208_include_all_cpt');
1
Abhik