Soporte » Guías – Resolución de problemas » Buscador WordPress personalizado

  • Resuelto javiermg

    (@javiermg)


    Buenos días,

    Estoy haciendo un buscador personalizado sin plugin, y solo me busca por post, y no las páginas de mi sitio WordPress. ¿Que tengo que poner en el archivo search.php, para que me busque además de los post(entradas), también las páginas?.

    Un saludo,

    Gracias.

Viendo 7 respuestas - 16 de 22 (de 22 total)
  • Me ha salido el tipo, en cada post o página. Entonces desarrollarlo para que salgan tantas páginas y entradas, de forma ordenada, ¿Es mucho lío?.

    Por otra parte, como más urgente, me quedaría que me mostrase las entradas, en una página, tengo todas la entradas, con la categoría noticias, pero en el frontend, tengo una pesteña en le menú, que se llama noticias, entonces quiero que cuando se pinché salga las entradas que son todas noticias.

    Hay alguna función que pueda traerme esas noticias, creando alguna clase php?

    Un saludo y muchísimas gracias.

    En el buscador sigo teniendo problemas en localhost ya me va perfecto pero lo subo al servidor producción, y hay palabras que no me busca, se queda en blanco como Juan o Carlos, pero luego otros nombres me lo busca, parece algo aleatorio.

    Es algo de servidor?

    kallookoo

    (@kallookoo)

    Buenas,

    Lo de hacerlo depende de tus conocimientos, como te comente es cuestion de como prefieras.
    Por ejemplo puedes usar la main query y luego en search.php lo separas o modificas la main query para que solo muestre los post y luego en el search.php hacer otra query pero solo para las pages, custom post type.

    Yo prefiero la primera ya que solo hacer una consulta y no tendrias problemas con la paginacion ya que si no hubiesen posts o pages seria indiferente.
    Ejemplo sin probar del action:

    
    function javier_pre_get_posts( $wp_query ) {
    	if ( ! is_admin() && $wp_query->is_main_query() && $wp_query->is_search() ) {
    		$wp_query->set( 'orderby', array( 'post_type' => 'DESC', 'post_title' => 'DESC' ) );
    	}
    }
    add_action( 'pre_get_posts', 'javier_pre_get_posts', 10 );
    

    Luego en el search.php yo simplemente haria algo como esto, igual que antes no esta probado.

    
    <?php if ( have_posts() ) : ?>
    	<?php static $cpt, $pt = null; // definimos las variables para detectar el cambio del post type. ?>
    	<?php while ( have_posts() ) : the_post(); ?>
    
    		<?php 
    			global $post; // Uso la global ya que get_post_type podria devolver un boolean si fallase.
    
    			// Creamos el primer contenedor con una clase dinamica por si queremos aplicar un estilo personalizado.
    			if ( is_null( $cpt ) && is_null( $pt ) ) {
    				$cpt = $pt = ( isset( $post->post_type ) ? sanitize_html_class( $post->post_type, '' ) : '' );
    				printf( '<div class="search-section search-section-%s">', $pt );
    
    				// Aqui se puede añadir otra cosa como un titulo.
    				
    			} else {
    				// Actualizamos una de las variables para detectar el cambio y si es necesario cerrarmos el ultimo contenedor y crearmos otro.
    				$cpt = ( isset( $post->post_type ) ? sanitize_html_class( $post->post_type, '' ) : '' );
    				if ( $cpt !== $pt ) {
    					printf( '</div><div class="search-section search-section-%s">', $cpt );
    
    					// Aqui se puede añadir otra cosa como un titulo.
    					
    				}
    			}
    			
    			// Aqui el codigo del post.
    			
    			// Cerramos el primer contenedor o el ultimo contenedor creado.
    			echo '</div>';
    			?>
    
    	<?php endwhile; ?>
    <?php endif; ?>
    

    Sobre tu ultima pregunta, si el contenido y el codigo es el mismo deberia funcionar. Aqui no puedo ayudarte, porque hay muchos factores que pueden interferir, dudo mucho que sea el servidor.

    • Esta respuesta fue modificada hace 6 meses por  kallookoo.
    javiermg

    (@javiermg)

    Probare la solución que me has propuesto. La verdad que me tiene loco el error, que me produce el buscador cuando lo subo al servidor de producción, me busca algunas palabras y otras no,se queda la página en blanco.

    Y en localhost me busca todo, y sin ningún fallo. Y el código es el mismo.

    kallookoo

    (@kallookoo)

    Una cosa,
    Te refieres que no muestra absolutamente nada, es decir el header, sidebar (si hubiese) y el footer.
    Si es asi, activa en el de produccion la constante ‘WP_DEBUG’ para ver los errores. Mas info aqui: https://codex.wordpress.org/Editing_wp-config.php#Debug

    Es posible que algo no sea compatible en el servidor, te entendi que no te aparecian resultados y por eso descarte el servidor.

    Buenas de nuevo,

    Muchas gracias por los comentarios, en localhost como dije me aparecen los resultados de búsqueda y me va bien la páginacion en dicha búsqueda.

    Cuando tengo la página subida al servidor, me aparece la búsqueda, pero si a lo mejor busco la palabra Juan, se queda en blanco, sucede con palabras sueltas no todas, y la páginacion cuan le doy a la segunda página de resultados pues me de dirige al index. Cosa que en localhost no sucede.

    Por eso pienso q es cosa del server de producción.

    Un saludo y muchas gracias.

    Moderador almendron

    (@almendron)

    Pide los logs de errores del servidor a ver si ahí aparece alguna pista sobre el error.
    Si tienes acceso por FTO, deberías ver esos logs en el directorio con el mismo nivel que el público.

    Nota: de da la impresión de que el problema pudiera estar en el tiempo de ejecución.

Viendo 7 respuestas - 16 de 22 (de 22 total)
  • Debes estar registrado para responder a este tema.