Pagenavi显示了许多页面,这些页面是从带有Query_Posts的站点中的所有帖子计算而来的

时间:2013-10-28 作者:adnan

我需要执行从2封关键字帖子使用s=keyword 具有get_posts, 但只搜索标题。我发现this answer.

我创建了一个自定义模板,以便在单个页面中使用它。然后我用了一个合并的get_posts 在我的回答中使用this

因此,我的自定义模板代码是:

<?php /* Template Name: custom template posts */ ?>

<?php get_header(); ?>
<?php add_filter( \'posts_search\', \'__search_by_title_only\', 500, 2 ); ?>
<?php
//first query
$blogposts = get_posts(array(
    \'s\' => \'keyword1\', \'showposts\' => -1,
    ));
//second query
$authorposts = get_posts(array(
    \'s\' => \'keyword2\', \'showposts\' => -1,
    ));
$mergedposts = array_merge( $blogposts, $authorposts ); //combine queries
$postids = array();
foreach( $mergedposts as $item ) {
$postids[]=$item->ID; //create a new query only of the post ids
}
$uniqueposts = array_unique($postids); //remove duplicate post ids
$mypostcount = count($posts);
$posts = get_posts(array(
            //new query of only the unique post ids on the merged queries from above
    \'post__in\' => $uniqueposts,
    \'posts_per_page\' => 12,
    \'paged\' => $paged,
    ));?>
<?php remove_filter( \'posts_search\', \'__search_by_title_only\', 500 ); ?>
<div class="post-listing">
<?php foreach( $posts as $post ) : ?>
<?php setup_postdata($post); ?>
// layout code here
<?php endforeach; ?>
</div>
<?php query_posts(\'paged=\'.$paged.\'&posts_per_page=\'. $cat_query); ?>
<?php if(function_exists(\'tie_pagenavi\') ) { tie_pagenavi(); } ?>
<?php wp_reset_postdata();?>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
当我转到wordpress admin时,创建新页面更改默认模板,一切正常,但有一个问题,我的分页显示了许多页面,这些页面在最后一页之后清空了根据数据库中所有帖子计算的所有页面数。

我正在使用一个自定义主题,其中包含一个名为tie_pagenavi(). 我也试过wp_pagenavi 插件。

Note: I am using $mypostcount = count($posts); to calculate the number of posts. I tested it by echo. It is really returned by the actual posts number in this loop but I am not sure how to use it to limit the pagination numbers.

你可以自己检查每件事http://elnhrda.com/e/sisi2posts/page/56/. 56是最后一个有帖子的页面。

Edit: 在进行了更多的搜索和测试之后,问题来自这一行

query\\u posts(\'paged=\'.$paged.&;posts\\u per\\u page=\'.$cat\\u query);

如果我删除它,分页就会消失。如果我添加\'&showposts=2000\' 为此,页码将我的帖子总数改为2000篇。

2 个回复
最合适的回答,由SO网友:adnan 整理而成

经过15个多小时的测试和;工作

The Solution is

更换此线路

query_posts(\'paged=\'.$paged.\'&posts_per_page=\'. $cat_query);

具有

query_posts(array(\'post__in\' => $uniqueposts, \'posts_per_page\' => 12,\'paged\' => $paged,));

The Problem is

这一行只负责运行分页,以便在我没有指定需要哪些帖子的情况下,与站点中的所有帖子一起运行

非常感谢所有试图帮助我的人&;希望这个答案对将来的身体有所帮助

SO网友:Charles Clarkson

我没有加载插件进行检查,也从未使用过query_posts(), 但也许tie_pagenavi() 取决于$paged 全局变量。尝试在调用之前(或之后)调整该值query_posts(). 这是在调用之前进行调整的代码query_posts().

if ( get_query_var( \'paged\' ) )
    // On a paged page.
    $paged = get_query_var( \'paged\' );

else
    $paged = 1;

query_posts( "paged={$paged}&posts_per_page={$cat_query}" );

if ( function_exists( \'tie_pagenavi\' ) )
    tie_pagenavi();

结束

相关推荐

Pagination in category

Updated: I have 50 categories and i wants to show each 5 category on one page and next 5 on next page and next 5 on next page. and so on. with pagination.我在WordPress网站上有50个类别。我想在每一页上显示五个类别,用10篇文章分页。我已经尝试过了,但分页并没有产生效果。<?php // get all the categ