分页时,WordPress会保留每页的帖子值

时间:2017-04-13 10:35:42

标签: php jquery wordpress pagination

我有一个选项,允许用户选择博客列表页面上显示的帖子数量。目前,select会自动提交其表单,并在重新加载页面查询时更新posts_per_page值。

global $query_string;
if(isset($_REQUEST['set_posts_per_page']))
    $ppp = $_REQUEST['set_posts_per_page'];
else
    $ppp = 12;
query_posts("{$query_string}&posts_per_page=".$ppp);

目前使用标准WordPress功能生成分页按钮:

previous_posts_link( '<span class="etc"></span>' );
next_posts_link('<span class="etc"></span>' );

重新使用此功能的最佳方法是什么,以便用户可以使用分页和posts_per_page选项?

有几个这样的页面列出了必须以相同方式工作的不同自定义帖子类型(如果这会产生影响)。

3 个答案:

答案 0 :(得分:0)

请在下面找到代码来获取博客。

<?php
        $queryObject = new WP_Query( 'post_type=blog&posts_per_page=5' );
        // The Loop!
        if ($queryObject->have_posts()) {
        ?>
        <ul>
        <?php
        while ($queryObject->have_posts()) {
        $queryObject->the_post();
        ?>

如果你想在页面上添加分页,添加wp-pagination插件也很容易使用。

只需添加

<?php echo wp_paginate(); ?>

我希望这会对你有所帮助。

谢谢

答案 1 :(得分:0)

<?php 
// the query to set the posts per page to 5
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array('posts_per_page' => 5, 'paged' => $paged );
query_posts($args); ?>
<!-- the loop -->
<?php if ( have_posts() ) : while (have_posts()) : the_post(); ?>
        <!-- rest of the loop -->
        <!-- the title, the content etc.. -->
<?php endwhile; ?>
<!-- pagination -->
<?php next_posts_link(); ?>
<?php previous_posts_link(); ?>
<?php else : ?>
<!-- No posts found -->
<?php endif; ?>

答案 2 :(得分:0)

这就是我最终要做的事情。唯一的缺点是它现在在URL中添加了一个get变量,但这不是世界末日。

这里我完全替换了next_posts_link()和previous_posts_link(),而是添加了自定义代码位。这些获取的分页功能通常会得到使用get_previous_posts_page_link()和get_next_posts_page_link()的URL,则检查是否set_posts_per_page REQUEST参数和粘性它到分页URL。

然后我手动构建导航按钮并使用get参数输入URL。 strtok函数通过每次剥离来阻止此get参数堆叠在URL中。

    <?php global $wp_query;
    $current_page = $wp_query->get( 'paged' );


    /* Previous link */
    $prev_url = strtok(get_previous_posts_page_link(), '?');

    if($prev_url && $current_page!=1 && $_REQUEST['set_posts_per_page']!='')
        $prev_url.="?set_posts_per_page=".$_REQUEST['set_posts_per_page'];

    if($prev_url && $current_page!=1) : ?>
        <a href="<?=$prev_url; ?>">
            <span class="navbuttons__btn navbuttons__btn--next btn btn--ui" rel="next">
                <i class="fa fa-arrow-left"></i>
            </span>
        </a>
    <?php endif;


    /* Next link */
    $next_url = strtok(get_next_posts_page_link(), '?');

    if($next_url && $current_page!=$wp_query->max_num_pages && $_REQUEST['set_posts_per_page']!='')
        $next_url.="?set_posts_per_page=".$_REQUEST['set_posts_per_page'];

    if($next_url && $current_page!=$wp_query->max_num_pages) : ?>
        <a href="<?=$next_url; ?>">
            <span class="navbuttons__btn navbuttons__btn--next btn btn--ui" rel="next">
                <i class="fa fa-arrow-right"></i>
            </span>
        </a>
    <?php endif; ?>