aramayı başlıklar ile sınırlamak nasıl?


26

Aramayı başlıklarla sınırlandırmanın bir yolu var mı? Query.php çekirdek dosyasını değiştirebildiğimi biliyorum, ancak doğru kanca ile yapmanın bir yolu olmalı?

Şimdiden teşekkürler!

Yanıtlar:


31

İşte hile yapacak bir filtre. Temanıza functions.phpveya bir eklentiye bırakın .

/**
 * 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 );

Kodun çoğu, kaldırılmış WP_Queryolanlar dışında, yalnızca sınıftan kopyalanır post_content LIKE.

GÜNCELLEME:like_escape() 4.0'dan beri kaldırıldı


mükemmel işler mükemmel, bunun için bir filtre olduğunu biliyordum, kodeksin hiçbir yerinde bulamadım, çok teşekkürler!
Javier Villanueva

@TheDeadMedic Blogumda yeni denedim ve bu belirli sorgu artık bu kodla veya kod olmadan sonuç vermiyor. Herhangi bir fikir?
Ashfame

Şimdi kod olmadan her zamanki gibi çalışıyor ancak kod benim için işe yaramadı. Aynı sonuçları gösterdi: /
Ashfame

@Ashfame Cevabımı değiştirdim.
TheDeadMedic

1
PHP mesajı: PHP Ölümcül hata: undefined yöntemine çağrı wpdb :: esc_like () --- Eski bir WordPress'iniz varsa, WP 4.0'dan itibaren yeni bir işlevdir
PJ Brunet
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.