Astra proporciona un opción de búsqueda dentro de un sitio web junto con algunos estilos.
Cuando un usuario busca cualquier término (cadena), los resultados se sirven de todo el sitio web, incluyendo todas tus páginas y entradas. Aunque no existe una opción para restringir la búsqueda solo a las entradas, puedes hacerlo con un código personalizado.
Este documento le mostrará cómo restringir la búsqueda sólo a las entradas. Además, también encontrarás código adicional para excluir los productos de WooCommerce si tienes una tienda online.
Restringir la búsqueda a los mensajes
Para limitar tu búsqueda sólo a las entradas, ve a Panel > Apariencia > Editor de temas. Aquí, tendrás que añadir el siguiente código personalizado a tu Astra Child Theme funciones.php archivo:
add_action( 'wp', 'astra_modify_search_loop', 99 );
/**
* Modify Search Loop.
*
* @return void
*/
function astra_modify_search_loop() {
remove_action( 'astra_content_loop', array( Astra_Loop::get_instance(), 'loop_markup' ) );
add_action( 'astra_content_loop', 'astra_redo_loop_markup' );
}
/**
* Redo loop to search only posts.
*
* @return void
*/
function astra_redo_loop_markup( $is_page = false ) {
global $post;
?>
<main id="main" class="site-main" role="main">
<?php if ( have_posts() ) : ?>
<?php do_action( 'astra_template_parts_content_top' ); ?>
<?php
while ( have_posts() ) :
the_post();
if ( is_search() && ( 'page' == $post->post_type ) ) {
continue;
}
if ( true == $is_page ) {
do_action( 'astra_page_template_parts_content' );
} else {
do_action( 'astra_template_parts_content' );
}
?>
<?php endwhile; ?>
<?php do_action( 'astra_template_parts_content_bottom' ); ?>
<?php else : ?>
<?php do_action( 'astra_template_parts_content_none' ); ?>
<?php endif; ?>
</main><!-- #main -->
<?php
}
function astra_exclude_products_from_search( $query ) {
if ( ! is_admin() && $query->is_search() ) {
$query->set( 'post_type', 'post' );
}
}
Si no tiene instalado el tema infantil, compruebe lo siguiente este artículo sobre cómo hacerlo. Además, si usted no está seguro de cómo agregar este código, por favor revise esto artículo.
Uso del código con Woocommerce
Además, si tienes WooCommerce funcionando en tu web, tus productos se seguirán mostrando junto a las entradas.
Por lo tanto, para excluir también los productos de WooCommerce de la búsqueda, necesitará una versión modificada del código mencionado anteriormente.
Por lo tanto, tendrá que sustituir esta parte en negrita del código:
if ( is_search() && ( 'page' == $post->post_type ) ) { continuar; }
...con éste:
if ( is_search() && ( 'page' == $post->post_type || 'product' == $post->post_type ) ) { continuar; }
Si modificas el código de esta forma, tanto las páginas como los productos de WooCommerce se omitirán de la búsqueda. En consecuencia, solo se mostrarán las entradas como resultado de la búsqueda.
Ya está. Esperamos que esta guía te haya ayudado.
Si tiene algún problema durante el proceso, no dude en ponerse en contacto con nuestro equipo de asistencia. Siempre estamos aquí para ayudarte.