ठीक है, मैंने इसे सुलझा लिया।
समस्या यह है कि पोस्ट क्वेरी में पोस्टमेटा तालिका शामिल नहीं है, इसलिए मैंने इसे custom_join
पर जोड़ा समारोह, इस तरह:
add_filter('posts_join','custom_join');
add_filter('posts_orderby','custom_orderby');
function custom_join($join){
global $wpdb;
$customTable = $wpdb->prefix."custom_table";
if(!is_admin){
$join .= "LEFT JOIN $wpdb->postmeta p1 ON $wpdb->posts.ID = p1.post_id";
$join .= "LEFT JOIN $customTable p2 ON p1.meta_value = p2.slug";
}
return $join;
}
function custom_orderby($orderby_statement){
global $wpdb;
if(!is_admin){
$orderby_statement = "p2.price DESC, $wpdb->posts.post_date DESC";
}
return $orderby_statement;
}
मैंने posts_groupby
. भी जोड़ा फ़िल्टर करें क्योंकि नई क्वेरी ने मुझे डुप्लीकेट पोस्ट (बहुत सारे डुप्लिकेट पोस्ट) दिए हैं।
यह रहा कोड:
add_filter('posts_groupby','custom_groupby');
function custom_groupby($groupby){
global $wpdb;
if(!is_admin){
$groupby = "$wpdb->posts.ID";
}
return $groupby;
}
सब कुछ प्लगइन फ़ाइल में लिखा है, लेकिन आप function.php
. में भी लिख सकते हैं आपकी थीम की फ़ाइल।
if(!is_admin)
. को शामिल करना न भूलें यदि आप कस्टम क्वेरी केवल देखना चाहते हैं तो कथन सामने के छोर पर।