对于你的问题,我有一些建议:
First: 停止使用query_posts()
. 看见the codex about this function 看看为什么不应该在主题或插件中使用它。不管怎样,如果你处在一个奇怪的情况下,你没有选择,你需要使用query_posts()
, 你应该跑wp_reset_query()
循环之后。您必须知道您正在使用global $wp_query
, 包含WordPress进行的原始查询,然后query_post
改变了global $wp_query
变量,则会得到意外的结果。此外,您正在使用一个不推荐使用的参数showposts
, 替换为posts_per_page
.
Second: 您可以使用自定义搜索模板(search.php)来定制外观。只要抓紧搜查。php文件,并根据需要对其进行自定义。Don\'t make custom queries here; 如果你这样做,你就是在对帖子进行新的查询,浪费WordPress已经完成的查询。浪费资源,对性能产生负面影响。
Third: 要更改WordPress使用的默认查询参数,如每页的帖子数等,可以使用pre_get_posts
action.
因此,创建一个您的搜索。php模板,如您所愿并使用pre_get_posts
向WordPress说明要在搜索查询中使用哪些参数的操作:
搜索。php模板可以是这样的:
<?php
get_header();
global $wp_query;
?>
<div class="wapper">
<div class="contentarea clearfix">
<div class="content">
<h1 class="search-title"> <?php echo $wp_query->found_posts; ?>
<?php _e( \'Search Results Found For\', \'locale\' ); ?>: "<?php the_search_query(); ?>" </h1>
<?php if ( have_posts() ) { ?>
<ul>
<?php while ( have_posts() ) { the_post(); ?>
<li>
<h3><a href="<?php echo get_permalink(); ?>">
<?php the_title(); ?>
</a></h3>
<?php the_post_thumbnail(\'medium\') ?>
<?php echo substr(get_the_excerpt(), 0,200); ?>
<div class="h-readmore"> <a href="<?php the_permalink(); ?>">Read More</a></div>
</li>
<?php } ?>
</ul>
<?php echo paginate_links(); ?>
<?php } ?>
</div>
</div>
</div>
<?php get_footer(); ?>
以及
pre_get_posts
操作如下:
add_action( \'pre_get_posts\', function( $query ) {
// Check that it is the query we want to change: front-end search query
if( $query->is_main_query() && ! is_admin() && $query->is_search() ) {
// Change the query parameters
$query->set( \'posts_per_page\', 3 );
}
} );