página de resultados de búsqueda personalizada

2

lo que hice,

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

luego crea un 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>

pero mi página de resultados no muestra la descripción del contenido y también muestra solo un resultado. pero en el título H1 aparece el número 2/3/5/6/7, etc. Número de resultados de búsqueda encontrados. Quiero mostrar al menos 10 resultados y luego la página y también mostrar el texto del contenido de 200/300 caracteres para el resultado de la búsqueda. chicos pueden ayudarme Todavía no soy experto wp

    
pregunta pagol001 11.05.2015 - 11:25

2 respuestas

7

Tengo algunas recomendaciones para tu pregunta:

Primero : deja de usar query_posts() . Consulte el códice sobre esta función para ver por qué no debe usarlo en temas o complementos. De todos modos, si estás en una situación extraña donde no tienes una opción y necesitas usar query_posts() , deberías ejecutar wp_reset_query() después del bucle. Debe saber que está utilizando global $wp_query , que contiene la consulta original realizada por WordPress, y luego query_post que altera la variable global $wp_query , obtiene resultados inesperados. Además, está utilizando un parámetro en desuso showposts , reemplazado por posts_per_page .

Segundo : puede usar una plantilla de búsqueda personalizada (search.php) para personalizar la apariencia. Simplemente cree un archivo search.php en su carpeta de temas y personalícelo como desee. No hagas consultas personalizadas aquí ; si lo hace, está realizando una nueva consulta de publicaciones y desperdiciando la consulta ya realizada por WordPress. Un desperdicio de recursos con un impacto negativo en el rendimiento.

Tercer : para cambiar los parámetros de consulta predeterminados utilizados por WordPress, como el número de publicaciones por página, etc., puede usar pre_get_posts action .

Entonces, cree una plantilla de search.php como desee y use la acción pre_get_posts para decirle a WordPress qué parámetros desea usar en la consulta de búsqueda:

La plantilla search.php podría ser algo como esto:

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

Y la acción pre_get_posts algo como esto:

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

    }

} );
    
respondido por el cybmeta 11.05.2015 - 13:17
0

Tienes que ejecutar el bucle, modificar tu search.php algo similar al código de abajo

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

Lea otras preguntas en las etiquetas