Pregunta sobre Developing with WordPress de Wordpress:

Búsqueda Ajax: elimine los resultados de la búsqueda si el campo srch está vacío + excluyendo páginas

Un usuario preguntó 👇

Hola, básicamente tengo una búsqueda ajax que muestra las páginas actuales de mi sitio web mientras escribo una palabra clave específica, PERO, tan pronto como borro el cuadro de búsqueda, todas las páginas permanecen allí y no se borran.

Además, ¿tiene alguna idea sobre cómo puedo excluir páginas de la búsqueda con mi código actual? Gracias por toda tu ayuda.

functions.php

function data_fetch(){

$the_query = new WP_Query( array( 'posts_per_page' => -1, 's' => esc_attr( 
$_POST['keyword'] ), 'post_type' => 'page' ) );
if( $the_query->have_posts() ) :
    while( $the_query->have_posts() ): $the_query->the_post(); ?>

        <h2><a href="<?php echo esc_url( get_permalink() ); ?>"><?php the_title();?></a></h2>

    <?php endwhile;
    wp_reset_postdata();  
endif;

die();
	
}

Ajax

function fetch(){
jQuery.ajax({
    url: "mywebsite/wp-admin/admin-ajax.php",
    type : "POST",
    data: { action: 'data_fetch', keyword: jQuery('#keyword').val() },
    success: function(data) {
		if('#keyword'=="") 
		{
  		jQuery('#datafetch').html("");
  		return;
		}
		else
		{
		jQuery('#datafetch').html( data );
		}
    }
	
});
};

Este tema fue modificado hace 1 año, 9 meses por. Este tema fue modificado hace 1 año, 9 meses por. Lanzador de hilos

(@halohtlo)

Hace 1 año, 9 meses

Por alguna razón, no puedo editar la publicación principal, olvidé agregar el formulario en sí:

<input type="text" name="keyword" id="keyword" onkeyup="fetch()"/>
<div id="datafetch">Search results will appear here</div>

(@stormrockwell)

Hace 1 año, 9 meses

if('#keyword'=="") Debería ser if ( jQuery('#keyword').val() == "" )

Una mejor solución sería:

function fetch() {
	var input = $.trim( jQuery('#keyword').val() );

	if ( input.length > 0 ) {
		jQuery.ajax({
		    url: "mywebsite/wp-admin/admin-ajax.php",
		    type : "POST",
		    data: { action: 'data_fetch', keyword: input },
		    success: function(data) {
			jQuery('#datafetch').html( data );
		    }
		});
	}
}

Además si prefieres el $ para jQuery puede doblar su código con un cierre como este:

( function( $ ) {
  // JS code
} ( jQuery ) )

Lanzador de hilos

(@halohtlo)

Hace 1 año, 9 meses

Similar a la solución que estaba buscando, aunque no funcionó al principio, tuve que agregar una condición más ‘si’. Gracias por la ayuda amiga, lo apreciamos.

¿Tiene alguna idea de cómo puedo excluir páginas de la búsqueda con mi código actual?

Esta respuesta fue modificada hace 1 año, 9 meses. Esta respuesta fue modificada hace 1 año, 9 meses. Esta respuesta fue modificada hace 1 año, 9 meses.

(@bcworkz)

Hace 1 año, 9 meses

Para excluir páginas, primero compile una lista de ID de página que desea excluir en una serie. Pase el conjunto como un argumento «post__not_in» cuando agregue WP_Query instantáneamente. Algo como:

$the_query = new WP_Query( array(
  'posts_per_page' => -1,
  's' => esc_attr( $_POST['keyword'] ),
  'post_type' => 'page',
  'post__not_in' => array(123,234,356,),
) );

Para su información: las publicaciones en estos foros solo se pueden editar durante 30 minutos después de su publicación. Luego se bloquean.

Lanzador de hilos

(@halohtlo)

Hace 1 año, 9 meses

Gracias amigo También encontré algo útil en la documentación y lo actualicé un poco. Aquí hay un código de trabajo para excluir páginas de sus ID para cualquiera que tenga problemas con él.

$post_ids = array(2461);
$the_query = new WP_Query(array( 
			'posts_per_page' => -1, 
			's' => esc_attr($_POST['keyword'] ), 
			'post_type' => 'page',
			'post__not_in' => $post_ids
			) );

¿Solucionó tu problema??

0 / 0

Deja una respuesta 0

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *