custom search result page

时间:2015-05-11 作者:pagol001

我所做的,

我创建搜索。php

<?php get_header(); ?>
<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>
      <ul>
        <?php query_posts(\'showposts=3\'); if (have_posts()) : ?>
        <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 endif ?>
      </ul>
    </div>
  </div>
</div>
<?php get_footer(); ?>
然后创建一个searchform。php

<form action="<?php bloginfo(\'siteurl\'); ?>" id="searchform" method="get">
  <input type="search" id="searchbox" name="s" placeholder="Enter keywords" required>
    <input type="image" id="searchsubmit" alt="Search" class="searchicon" src="<?php bloginfo( \'template_url\' ); ?>/images/icon-search.gif" />
</form>
但我的结果页面没有显示内容描述,也只显示一个结果。但在标题H1上显示了2/3/5/6/7等数字搜索结果。我想显示至少10个结果,然后页面,还显示200/300个字符的搜索结果内容文本。伙计们可以帮我。我还不是wp专家

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

对于你的问题,我有一些建议:

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

    }

} );

SO网友:shuvroMithun

您必须运行循环,修改搜索。php类似于下面的代码

  <?php get_header();?>

    <div class="wapper">
      <div class="contentarea clearfix">
        <div class="content">
            <ul>
                <?php if ( have_posts() ) : ?>

            <header class="page-header">
                <p><?php printf( __( \'Search Results for: %s\', \'twentyfourteen\' ), get_search_query() ); ?></p>
            </header><!-- .page-header -->

                        <?php
                        // Start the Loop.
                        while ( have_posts() ) : the_post();
                        ?>
                        <li><h3><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h3></li>
                        <?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>
                        <?php
                        endwhile;
                else :
                // If no content, include the "No posts found" template.
                get_template_part( \'content\', \'none\' );
                endif;
                ?>       
            </ul>                                 

        </div>
      </div>
    </div>
<?php get_footer(); ?>

结束

相关推荐

挂钩POSTS_WHERE WITH POSTS_JOIN和POSTS_SEARCH性能有什么不同吗?

我想知道我应该使用哪个性能更快的过滤器挂钩。我两次都试了好几次,我注意到posts_search 比使用posts_where 和posts_join你对此有何看法?