Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

प्लगइन में कस्टम तालिका के साथ वर्डप्रेस पोस्ट_ऑर्डर द्वारा फ़िल्टर करें

ठीक है, मैंने इसे सुलझा लिया।

समस्या यह है कि पोस्ट क्वेरी में पोस्टमेटा तालिका शामिल नहीं है, इसलिए मैंने इसे 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) . को शामिल करना न भूलें यदि आप कस्टम क्वेरी केवल देखना चाहते हैं तो कथन सामने के छोर पर।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL और HBase कनेक्टिविटी

  2. MySQL - DATE_ADD महीने का अंतराल

  3. MySQL में एकाधिक तालिकाओं से पंक्तियों को हटाना

  4. Oracle SQL डेवलपर का उपयोग करके आप MySQL डेटाबेस से कैसे जुड़ते हैं?

  5. MySQL एकाधिक मानों का चयन करें