我需要执行从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篇。