¿Hay alguna forma de limitar la búsqueda para publicar títulos? Sé que puedo modificar el archivo core query.php, pero debe haber una manera de hacerlo con ganchos, ¿verdad?
¡Gracias por adelantado!
Aquí hay un filtro que hará el truco. Colóquelo en su tema functions.phpo 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 parte del código se copia de la WP_Queryclase, excepto con los que se post_content LIKEeliminan.
ACTUALIZACIÓN: Eliminado en desuso like_escape()desde 4.0