खोज को पोस्ट शीर्षक तक सीमित कैसे करें?


26

क्या शीर्षक पोस्ट करने के लिए खोज को सीमित करने का एक तरीका है? मुझे पता है कि मैं query.php कोर फ़ाइल को संशोधित कर सकता हूँ, लेकिन सही तरीके से इसे करने का कोई तरीका होना चाहिए?

अग्रिम में धन्यवाद!

जवाबों:


31

यहाँ एक फ़िल्टर है जो चाल को करेगा। इसे अपने विषय functions.phpया प्लगइन में छोड़ें ।

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

अधिकांश कोड केवल WP_Queryकक्षा से कॉपी किए जाते हैं , सिवाय post_content LIKEहटाए गए के साथ।

अद्यतन:like_escape() 4.0 से हटाए गए हटाए गए


पूरी तरह से महान काम करता है, मुझे पता था कि इसके लिए एक फिल्टर था, कोडेक्स में कहीं भी नहीं मिला, बहुत बहुत धन्यवाद!
जेवियर विलानुएवा

@ TheDeadMedic मैंने अभी अपने ब्लॉग पर इसकी कोशिश की और उस विशेष क्वेरी में अब इस कोड के साथ या उसके बिना कोई परिणाम नहीं मिलता है। कोई विचार?
अश्फाम

अब कोड के बिना हमेशा की तरह काम कर रहा है लेकिन कोड मेरे लिए काम नहीं करता है। इसने वही परिणाम दिखाए: /
एशफैम

@Ashfame मैंने अपने उत्तर को संशोधित किया है।
TheDeadMedic

1
PHP संदेश: PHP घातक त्रुटि: अपरिभाषित विधि के लिए कॉल करें wpdb :: esc_like () --- यदि आपके पास एक पुराना वर्डप्रेस है, तो यह WP 4.0 के रूप में एक नया कार्य है
PJ Brunet
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.