繁体   English   中英

WordPress在分页时保持每页的帖子数

[英]WordPress keeping posts per page value when paginating

我有一个选择,允许用户选择博客列表页面上显示的帖子数量。 目前,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选项?

像这样的几页列出了不同的自定义帖子类型,它们必须以相同的方式工作(如果有所不同)。

请找到以下代码以获取博客。

<?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(); ?>

我希望这能帮到您。

谢谢

<?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; ?>

这就是我最终要做的。 唯一的缺点是现在它在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; ?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM