Mostrar el Número de Resultados de Búsqueda

3 ago 2013, 18:52:36
Vistas: 53.4K
Votos: 21

Hasta ahora he estado usando el siguiente código para obtener el número de resultados cuando alguien realiza una búsqueda y mostrar ese conteo.

<?php /* Conteo de Búsqueda */ $allsearch =& new WP_Query("s=$s&showposts=-1"); $count = $allsearch->post_count; echo $count . ' '; wp_reset_query(); ?>

Pero esto no parece ser un código válido. Muestra el siguiente error:

Deprecated: Assigning the return value of new by reference is deprecated

¿Alguien puede sugerir la forma correcta en la que puedo obtener el conteo de búsqueda? El código anterior está colocado en el encabezado de mi archivo index.php del tema dentro de una declaración condicional para mostrar diferentes encabezados según el tipo de página en la que se encuentra un usuario.

1
Comentarios

allsearch = new WP_Query sin '&' para evitar el aviso de obsoleto.

gmazzap gmazzap
3 ago 2013 19:04:41
Todas las respuestas a la pregunta 2
3
43

Si estás dentro de la plantilla de búsqueda, es decir, la consulta de búsqueda es tu consulta principal. Entonces deberías poder obtener los resultados de búsqueda desde la variable global $wp_query sin ejecutar una consulta adicional.

global $wp_query;
echo $wp_query->found_posts.' resultados encontrados.';

Edición 1

Si necesitas obtener el conteo fuera del contexto de búsqueda. Puedes combinar ambas técnicas para obtener un resultado eficiente. No recuperará todas las publicaciones pero podrás obtener el conteo de búsqueda.

$allsearch = new WP_Query("s=$s&showposts=0"); 
echo $allsearch ->found_posts.' resultados encontrados.';

Tu Error

Acerca del error que estás obteniendo, se encuentra aquí

$allsearch =& new WP_Query("s=$s&showposts=-1");

Elimina el "&" junto al signo igual para eliminar el error. Así quedará:

$allsearch = new WP_Query("s=$s&showposts=-1");
3 ago 2013 18:59:42
Comentarios

Wow, gracias. También probé esto y funcionó '<?php / Contador de búsquedas / $count = $wp_query->post_count; echo $count . ' '; wp_reset_query(); ?>'

Harish Chouhan Harish Chouhan
3 ago 2013 19:21:09

Harish, tu código $allsearch = new WP_Query("s=$s&showposts=0"); echo $allsearch ->found_posts.' resultados encontrados.'; solo mostrará el conteo de la página actual, no el total. Por ejemplo, mostrará solo 10 si hay 20 publicaciones.

Suyash Jain Suyash Jain
28 may 2016 11:01:41

¿Cómo es que el código funcionaba antes y ahora no funciona? He eliminado el "&" del lado del igual. Y ahora funciona de nuevo.

Jornes Jornes
11 abr 2020 17:25:59
0

También puede ser útil compartir esto, para que tu primer encabezado notifique al usuario que se encontraron resultados de búsqueda y el segundo, indique cuántos se encontraron. Si hubo menos de 2 resultados, debería decir '1 resultado encontrado', de lo contrario 'x resultados encontrados'.

    <h2 class="blog_archive_heading">Resultados de búsqueda para '<?php the_search_query(); ?>'</h2>
<h3 class="blog_archive_heading"><?php
  global $wp_query;
  if($wp_query->found_posts < 2) {
    $result = "resultado";
  } else {
    $result = "resultados";
  }
    echo $wp_query->found_posts . " " . $result . " encontrados.";
    ?></h3>

Este fragmento de código aparece en mi search.php por así decirlo.

section-searchresults.php simplemente mostrará las entradas del blog que se encontraron relacionadas con tu búsqueda, si no se encontró ninguna, mostrará 'No se encontraron resultados'.

21 sept 2021 08:42:13