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!
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!
Antworten:
Hier ist ein Filter, der den Trick macht. Ziehen Sie es in Ihr Theme functions.php
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 WP_Query
Klasse kopiert , mit Ausnahme der post_content LIKE
entfernten.
UPDATE: Wurde like_escape()
seit 4.0 entfernt