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.
carlos gutierrez dice
Hola me dice error fatal al poner el codigo en php
dani dice
Puede que hayas pegado el código dentro de otra función existente o fuera de las llaves de PHP
()
Gustavo Pascaner dice
excelente post. mil gracias por la ayuda! =)