Dani Sánchez, Gestionatuweb.net

Desarrollador web freelance

Divi, hacer que el módulo de búsqueda funcione en Custom Posts

Por defecto, el módulo de búsqueda de Divi solo ofrece resultados provenientes de páginas y entradas (los tipos de post por defecto de WordPress).

Pero si nuestra web tiene contenidos personalizados, es posible que necesitemos ampliar las búsquedas a este tipo de contenidos.

Este artículo también está disponible en vídeo:

Para integrar custom posts en el módulo de búsqueda tenemos que añadir la siguiente función al archivo de funciones de Divi (se recomienda crear un child theme), o en nuestro propio plugin de funciones.

function custom_remove_default_et_pb_custom_search() { 
    remove_action( 'pre_get_posts', 'et_pb_custom_search' ); 
    add_action( 'pre_get_posts', 'custom_et_pb_custom_search' ); 
} 
add_action( 'wp_loaded', 'custom_remove_default_et_pb_custom_search' ); 
 
 function custom_et_pb_custom_search($query = false){ 
    if(is_admin() || ! is_a($query, 'WP_Query') || ! $query->is_search){ 
        return; 
    } 
 
    if(isset($_GET['et_pb_searchform_submit'])){ 
    $postTypes = array(); 
 
        if(!isset($_GET['et_pb_include_posts']) && ! isset($_GET['et_pb_include_pages'])){ 
            $postTypes = array('post'); 
        } 
    
        if(isset($_GET['et_pb_include_pages'])){ 
            $postTypes = array('page'); 
        } 
    
        if(isset($_GET['et_pb_include_posts'])){ 
        $postTypes[] = 'post'; 
        } 
    
        /* Comienza a añadir tus custom posts*/ 
        $postTypes[] = 'vehiculos'; 
        /* Fin añadir tus custom posts*/ 
    
        $query->set('post_type', $postTypes); 
    
        if(! empty($_GET['et_pb_search_cat'])){ 
                $categories_array = explode(',', $_GET['et_pb_search_cat']); 
            $query->set('category__not_in', $categories_array); 
        } 
    
        if(isset($_GET['et-posts-count'])){ 
            $query->set( 'posts_per_page', (int) $_GET['et-posts-count']); 
        } 
    } 
} 

Presta atención a la línea:

/* Comienza a añadir tus custom posts*/ 
        $postTypes[] = 'vehiculos'; 
/* Fin añadir tus custom posts*/

Donde ‘vehiculos’ es el identificador del custom posts que queremos añadir a la búsqueda. Si necesitamos añadir más tipos de posts, solo tenemos que asignarlos al $postTypes[] línea a línea:

$postTypes[] = 'mi_custom_post';
$postTypes[] = 'otro_custom_post';
...

En esta web de vehículos, si intentamos buscar el nombre de un coche sin integrar el código anterior, no obtendremos ningún resultado de búsqueda.

En cambio, integrando el código anterior:

Recuerda que puedes adquirir Divi desde mi enlace de afiliado con descuentos de hasta el 20%, así me ayudarás a seguir creando contenidos sobre Divi en mi Blog y en Youtube.

3 Comentarios

Deja tu comentario

Recomiendo para hosting

Raiola Networks