Con alguna solución vulnerable publicada aquí, vengo con una versión un poco simplificada y desinfectada.
Primero, creamos una función para el posts_wherefiltro que le permite mostrar solo publicaciones que coinciden con condiciones específicas:
function cc_post_title_filter($where, &$wp_query) {
global $wpdb;
if ( $search_term = $wp_query->get( 'cc_search_post_title' ) ) {
$where .= ' AND ' . $wpdb->posts . '.post_title LIKE \'%' . $wpdb->esc_like( $search_term ) . '%\'';
}
return $where;
}
Ahora agregamos cc_search_post_titlea nuestros argumentos de consulta:
$args = array(
'cc_search_post_title' => $search_term, // search post title only
'post_status' => 'publish',
);
Y finalmente envuelva el filtro alrededor de la consulta:
add_filter( 'posts_where', 'cc_post_title_filter', 10, 2 );
$query = new WP_Query($args);
remove_filter( 'posts_where', 'cc_post_title_filter', 10 );
Usando get_posts ()
Ciertas funciones que recuperan publicaciones no ejecutan filtros, por lo que las funciones de filtro posts_where que adjunte no modificarán la consulta. Si planea usar get_posts()para consultar sus publicaciones, debe establecerlo suppress_filtersen falso en su matriz de argumentos:
$args = array(
'cc_search_post_title' => $search_term,
'suppress_filters' => FALSE,
'post_status' => 'publish',
);
Ahora puedes usar get_posts():
add_filter( 'posts_where', 'cc_post_title_filter', 10, 2 );
$posts = get_posts($args);
remove_filter( 'posts_where', 'cc_post_title_filter', 10 );
¿Qué pasa con el sparámetro?
El sparámetro está disponible:
$args = array(
's' => $search_term,
);
Al agregar su término de búsqueda en el strabajo de parámetros y buscará el título de la publicación, también buscará el contenido de la publicación.
¿Qué pasa con el titleparámetro que se agregó con WP 4.4?
Pasar un término de búsqueda al titleparámetro:
$args = array(
'title' => $search_term,
);
Mayúsculas y minúsculas y LIKE, no %LIKE%. Esta búsqueda media hellono devolverá la publicación con título Hello Worldo Hello.
$wpdb->prepare().