¿Cómo limitar la búsqueda para publicar títulos?

23

¿Hay una manera de limitar la búsqueda para publicar títulos? Sé que puedo modificar el archivo de base de consultas.php, pero debe haber una manera de hacerlo con los ganchos, ¿no?

Gracias de antemano!

    
pregunta Javier Villanueva 12.03.2011 - 15:06

1 respuesta

28

Aquí hay un filtro que hará el truco. Colóquelo en el tema functions.php o en un complemento.

/**
 * Search SQL filter for matching against post title only.
 *
 * @link    http://wordpress.stackexchange.com/a/11826/1685
 *
 * @param   string      $search
 * @param   WP_Query    $wp_query
 */
function wpse_11826_search_by_title( $search, $wp_query ) {
    if ( ! empty( $search ) && ! empty( $wp_query->query_vars['search_terms'] ) ) {
        global $wpdb;

        $q = $wp_query->query_vars;
        $n = ! empty( $q['exact'] ) ? '' : '%';

        $search = array();

        foreach ( ( array ) $q['search_terms'] as $term )
            $search[] = $wpdb->prepare( "$wpdb->posts.post_title LIKE %s", $n . $wpdb->esc_like( $term ) . $n );

        if ( ! is_user_logged_in() )
            $search[] = "$wpdb->posts.post_password = ''";

        $search = ' AND ' . implode( ' AND ', $search );
    }

    return $search;
}

add_filter( 'posts_search', 'wpse_11826_search_by_title', 10, 2 );

La mayoría del código se copia de la clase WP_Query , excepto que se eliminó el post_content LIKE .

ACTUALIZACIÓN: eliminó like_escape() obsoleto desde 4.0

    
respondido por el TheDeadMedic 12.03.2011 - 15:51

Lea otras preguntas en las etiquetas