página de resultados de pesquisa personalizada

2

o que eu fiz,

eu crio um 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(); ?>

crie um 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>

mas minha página de resultados não mostra a descrição do conteúdo e também mostra apenas um resultado. mas no título H1 ele mostra 2/3/5/6/7 etc número Resultado da pesquisa encontrado. Eu quero mostrar pelo menos 10 resultado e, em seguida, página e também mostrar texto de conteúdo 200/300 caracteres para o resultado da pesquisa. caras podem me ajudar. Eu não sou perito wp ainda

    
por pagol001 11.05.2015 / 11:25

2 respostas

7

Eu tenho algumas recomendações para sua pergunta:

Primeiro : pare de usar query_posts() . Veja o codex sobre esta função para ver porque você não deve usá-lo em temas ou plugins. Enfim, se você está em uma situação estranha em que você não tem opção e você precisa usar query_posts() , você deve executar wp_reset_query() após o loop. Você deve saber que está usando o global $wp_query , que contém a consulta original feita pelo WordPress e, em seguida, query_post , que altera a variável global $wp_query , e você obtém resultados inesperados. Além disso, você está usando um parâmetro reprovado showposts , substituído por posts_per_page .

Segundo : você pode usar um modelo de pesquisa personalizado (search.php) para personalizar a aparência. Basta colocar um arquivo search.php na pasta do seu tema e personalizá-lo como quiser. Não faça consultas personalizadas aqui ; Se você fizer isso, estará fazendo uma nova consulta para postagens e perdendo a consulta já feita pelo WordPress. Um desperdício de recursos com impacto negativo no desempenho.

Terceiro : para alterar os parâmetros de consulta padrão usados pelo WordPress, como número de postagens por página, etc, você pode usar pre_get_posts action .

Portanto, crie um modelo search.php como desejar e use pre_get_posts action para dizer ao WordPress quais parâmetros você deseja usar na consulta de pesquisa:

O modelo search.php poderia ser algo assim:

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

E a ação pre_get_posts é algo assim:

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

    }

} );
    
por cybmeta 11.05.2015 / 13:17
0

Você tem que executar o loop, modificar seu search.php algo semelhante ao código abaixo

  <?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(); ?>
    
por shuvroMithun 11.05.2015 / 11:40