私がしたこと、
私はsearch.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>
しかし、私の結果ページにはコンテンツの説明が表示されず、結果も1つだけ表示されます。タイトルH1に2/3/5/6/7などの番号を表示しています検索結果が見つかりました。私は少なくとも10の結果を表示してからページを表示し、また検索結果の200/300文字のコンテンツテキストを表示したいです。みんな私を助けることができます。私はまだエキスパートWPではありません
私はあなたの質問に対していくつかの提言をします:
First:query_posts()
の使用をやめます。 この関数についてのコーデックス を見て、なぜあなたがそれをテーマやプラグインの中で使うべきではないのかを見てください。とにかく、あなたがオプションを持っておらず、query_posts()
を使う必要があるような、ちょっと変わった状況にあるのなら、ループの後にwp_reset_query()
を実行するべきです。あなたはWordPressによって作られたオリジナルのクエリを含むglobal $wp_query
を使っていることを知っていなければなりません、そしてそれからquery_post
変数を変えるglobal $wp_query
、あなたは予期しない結果に終わるでしょう。さらに、廃止予定のパラメータshowposts
をposts_per_page
に置き換えて使用しています。
Second:あなたはルックアンドフィールをカスタマイズするためにカスタム検索テンプレート(search.php)を使うことができます。テーマフォルダ内のsearch.phpファイルを作成して、必要に応じてカスタマイズするだけです。 ここでカスタムクエリを作成しないでください;あなたがそうするならば、あなたは投稿のために新しい質問をして、そしてすでにWordPressによってなされた質問を無駄にしています。パフォーマンスに悪影響を与えるリソースの無駄。
Third:1ページあたりの投稿数など、WordPressが使用するデフォルトのクエリパラメータを変更するには、 pre_get_posts
action を使用できます。
それで、あなたが望むようにあなたのsearch.phpテンプレートを作成して、あなたが検索クエリでどんなパラメータを使いたいかをWordPressに言うためにpre_get_posts
アクションを使います:
Search.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 );
}
} );
あなたはループを実行する必要があります、あなたのsearch.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(); ?>