Cum să limitezi căutarea doar la titlurile articolelor?
Iată un filtru care va face treaba. Adaugă-l în fișierul functions.php
al temei tale sau într-un plugin.
/**
* Filtru SQL pentru căutare doar în titlurile articolelor.
*
* @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 );
Majoritatea codului este copiat din clasa WP_Query
, cu excepția eliminării condițiilor post_content LIKE
.
ACTUALIZARE: Eliminat funcția învechită like_escape()
începând cu versiunea 4.0

funcționează perfect, știam că există un filtru pentru asta, dar nu l-am găsit nicăieri în codex, mulțumesc mult!

@TheDeadMedic Tocmai am încercat pe blogul meu și acea interogare specifică acum nu returnează niciun rezultat, cu sau fără acest cod. Ai vreo idee?

Acum funcționează ca de obicei fără cod, dar codul nu a funcționat pentru mine. A afișat aceleași rezultate :/

Mulțumesc, funcționează bine, dacă elimini {$n}s lângă {$term} face căutarea exactă. Dar există o problemă, nu caută termeni cu spații precum "suc de mere". Dar caută termenul "mere".

Da, dacă elimini {$n}
, elimini injectarea șirului wildcard. Lasă codul așa cum este și folosește argumentul URL exact=1
pentru a controla dacă căutarea este aproximativă sau explicită.

Mesaj PHP: Eroare fatală PHP: Apel către metoda nedefinită wpdb::esc_like() --- Dacă aveți o versiune mai veche de WordPress, aceasta este o funcție nouă introdusă începând cu WP 4.0
