मैंने WP डिफ़ॉल्ट खोज के लिए एक फ़ंक्शन जोड़ने का प्रयास किया, मैं इसे पहले शू पेज आइटम के लिए परिणाम बनाना चाहता हूं, फिर आइटम पोस्ट करना चाहता हूं, लेकिन यह अभी तक काफी काम नहीं कर रहा है। मैं खोज के लिए किसी प्लगइन का उपयोग नहीं कर रहा हूं।

यहाँ मेरा कोड है (function.php में):

पहला वाला

<?php 
function filter_search($query) {
if ($query->is_search) {
$query->set('post_type', array('page', 'post'));

};
return $query;
};
add_filter('pre_get_posts', 'filter_search');
?>

दूसरा प्रयास मैंने किया:

<?php
function filter_search($query) {
if ($query->is_search) {
$query->set('post_type', 
       array(
       'post_type'=>'page', 
       'orderby' => 'title',
       'order'   => 'DESC',
       )
       );
} else {
$query->set('post_type', 
       array(
       'post_type'=>'post', 
       'order'   => 'DESC',
       )
       );
};
return $query;
add_filter('pre_get_posts', 'filter_search');
?>

सहायता के लिए धन्यवाद!

0
madebymt 26 सितंबर 2018, 03:59

1 उत्तर

सबसे बढ़िया उत्तर

आप SQL केस एक्सप्रेशन का उपयोग करने का प्रयास कर सकते हैं

add_filter( 'posts_orderby', 'order_search_by_posttype', 10, 2 );
function order_search_by_posttype( $orderby, $wp_query ){
    if( ! $wp_query->is_admin && $wp_query->is_search ) :
        global $wpdb;
        $orderby =
            "
            CASE WHEN {$wpdb->prefix}posts.post_type = 'page' THEN '1' 
                 WHEN {$wpdb->prefix}posts.post_type = 'post' THEN '2' 
            ELSE {$wpdb->prefix}posts.post_type END ASC, 
            {$wpdb->prefix}posts.post_title ASC";
    endif;
    return $orderby;
}

मुझे यह समाधान यहां मिला, https://wordpress.stackexchange. com/questions/177650/sort-search-results-by-post-type/177653#177653

0
Sandeep Panchal 26 सितंबर 2018, 11:29