Gibt es eine Möglichkeit, die Suche auf Beitragstitel zu beschränken? Ich weiß, dass ich die Kerndatei query.php ändern kann, aber es muss eine Möglichkeit geben, dies mit Hooks zu tun, oder?
Danke im Voraus!
Hier ist ein Filter, der den Trick macht. Lege es in den functions.php
deines Themas oder in ein Plugin.
/**
* 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 );
Der größte Teil des Codes wird nur aus der Klasse WP_Query
kopiert, mit Ausnahme der entfernten post_content LIKE
.
UPDATE: Veraltete like_escape()
seit 4.0 entfernt