Wordpress query_posts Pagination issue

2019-08-31 09:16发布

thank you in advanced for any insight I've been scratching my head over this.

This is the code i'm using to call the posts on the homepage: (www.csmpromo.com)

<div id="home-posts">

    <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    query_posts(array( 'cat' => 'home', 'types' => $types, 'posts_per_page' => 19, 'paged' => $paged, ) ); ?>
    <?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>

    <div class="home-post"><a href="<?php the_permalink(); ?>" class="transition">
            <div class="home-image">
                <?php if ( has_post_thumbnail() ) { the_post_thumbnail('home-thumb', array('class' => 'home-image')); } else { ?>
                <img src="<?php bloginfo('template_directory'); ?>/img/fallback.jpg" alt="<?php the_title(); ?>" class="home-image" />
                <?php } ?>
            </div>
            <?php the_titlesmall('', '<i class="icon-right-open-mini"></i>', true, '80') ?></a>
                <div class="home-post-meta">
                    <i class="icon-user" style="font-size:7px; color:#9B362F"></i> <?php the_author_link(array('class' => 'home-author')); ?></span> 
                    <i class="icon-feather" style="font-size:7px; color:#9B362F"></i> <?php the_time('F j, Y'); ?> at <?php the_time('g:i a'); ?>
                    <i class="icon-chat" style="font-size:7px; color:#9B362F"></i> <?php comments_number('0 Comments', '1 Comments', '% Comments' );?></div>
                </div>

    <?php endwhile; endif; ?>

    <div class="navigation">
        <div class="alignleft"><?php previous_posts_link('&laquo; Previous') ?></div>
        <div class="alignright"><?php next_posts_link('More &raquo;') ?></div>
    </div>

    <?php wp_reset_query();  ?>

</div>

I've read there are many issues with using query_posts with pagination but every solutions i've tried has failed.

Thank you!

1条回答
【Aperson】
2楼-- · 2019-08-31 10:06

It's recommended to abandon the usage of query_posts, leave the original query on the home page intact, and modify the query from your functions.php file, using pre_get_posts, e.g.:

add_action( 'pre_get_posts','so16286638_pre_get_posts' );
function so16286638_pre_get_posts( $query )
{
    if( is_home() && $query->is_main_query() ){
        $query->set( 'cat', 'home' );
        $query->set( 'post_type', 'post' );
        // more params
    }
    return $query;
}

More info: https://wordpress.stackexchange.com/questions/50761/when-to-use-wp-query-query-posts-and-pre-get-posts

查看更多
登录 后发表回答