Saltar al contenido

Incluir categoría y etiquetas en la búsqueda

marzo 12, 2019
Incluir catergorias y etiquetas en las búsquedas orbital theme

Si alguna vez has utilizado la barra de buscar en WordPress, habrás notado que no se incluyen los resultados de nombre de categorías o etiquetas.

Hoy, implementaremos un código PHP que nos permitirá incluir en los resultados, las categorías y etiquetas de una búsqueda 2019.

Si aún no te has dado cuenta de este particular, puedes verificarlo tu mismo! Realiza una búsqueda de una palabra clave que sabes que solamente existe en una etiqueta o categoría.

Así entenderás la importancia de implementar esta solución, así que vamos allá. Comprobado y funcionando en la versión 2.1.4.

Primero te recomiendo utilizar un plugin, dé lo que piensas, «¿con plugin?» pero tranquilicémonos, el plugin es Code Snippets, nos permitirá agregar código php sin tener que acceder al archivo functions.php.

Dirígete a Plugins/Añadir Nuevo/ y busca «Code Snippets» instala y activa.

code snippets plugin

Ahora, agrega un «nuevo snippet», en la barra lateral izquierda localiza la pestaña «Snippets» y has clic en «Añadir nuevo».

Agrégale un nombre, te recomiendo «Cod Búsqueda en Cat y Tags», así sabrás con exactitud de que se trata en el futuro.

Añadir nuevo en code snippets

En el campo «código», por favor copia y pega el siguiente código php, de principio a fin:

add_filter( ‘posts_join’, ‘custom_posts_join’, 10, 2 );
/posts_join/
function custom_posts_join( $join, $query ) {global $wpdb;if ( is_main_query() && is_search() ) {
$join .= » LEFT JOIN( {$wpdb->term_relationships} INNER JOIN {$wpdb->term_taxonomy} ON {$wpdb->term_taxonomy}.term_taxonomy_id = {$wpdb->term_relationships}.term_taxonomy_id INNER JOIN {$wpdb->terms} ON {$wpdb->terms}.term_id = {$wpdb->term_taxonomy}.term_id ) ON {$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id «;}
return $join;}
add_filter( ‘posts_where’, ‘custom_posts_where’, 10, 2 );
/Callback for WordPress ‘posts_where’ filter./
function custom_posts_where( $where, $query ) {global $wpdb;if ( is_main_query() && is_search() ) {
// get additional where clause for the user
$user_where = custom_get_user_posts_where();
$where .= » OR ( {$wpdb->term_taxonomy}.taxonomy IN( ‘category’, ‘post_tag’ ) AND
{$wpdb->terms}.name LIKE ‘%» . esc_sql( get_query_var( ‘s’ ) ) . «%’ {$user_where} )»;}
return $where;}
/Get a where clause dependent on the current user’s status./
function custom_get_user_posts_where() {global $wpdb;$user_id = get_current_user_id();$sql = »;$status = array( «‘publish'» );
if ( $user_id ) {
$status[] = «‘private'»;
$sql .= » AND {$wpdb->posts}.post_author = {$user_id}»;}
$sql .= » AND {$wpdb->posts}.post_status IN( » . implode( ‘,’, $status ) . » ) «;return $sql;}
add_filter( ‘posts_groupby’, ‘custom_posts_groupby’, 10, 2 );
/Callback for WordPress ‘posts_groupby’ filter./
function custom_posts_groupby( $groupby, $query ) {global $wpdb; if ( is_main_query() && is_search() ) {$groupby = «{$wpdb->posts}.ID»;}
return $groupby;}

Asegúrate de copiar y pegar todo el código php, lo digo por que en particular éste es bastante extenso.

Para finalizar dale al botón Guardar cambios y activar, y vamos a comprobar que los cambios se hayan efectuado.

En la versión frontend, que es como la ve el usuario final o visitante de tu página realiza una búsqueda y verifica que la categoría o etiqueta que antes no arrojaba resultado ahora si lo haga.

De ahora en adelante cada búsqueda incluirá los resultados de las etiquetas y categorías.

Espero te hayas divertido, compartas y me comentes que te ha parecido este artículo.

Christian E. Muñoz

Me gustan las computadoras, el Marketing, Internet y nuevas tecnologías.
¡Vamos lo que se llama un geek!

0/5 (0 Reviews)