कुशल वर्गीकरण स्वायत्तता


9

मेरे पास इसके लिए कई उपयोग हैं, लेकिन मैं यह करना चाहता हूं कि एक महंगा ऑपरेशन करने का सबसे अच्छा तरीका है।

एक उदाहरण के रूप में मैं एक दुकान का उपयोग करूंगा।

दिया हुआ:

  • एक उत्पाद ब्रांड वर्गीकरण
  • एक उत्पाद समूह वर्गीकरण
  • एक उत्पाद पोस्ट प्रकार
  • उपरोक्त टैक्सोनियों के लिए पुरालेख टेम्पलेट

किसी उत्पाद प्रकार के संग्रह में ब्रांड मेनू दिखाने पर और ब्रांड के संग्रह में उत्पाद के प्रकार के बारे में सबसे कुशल, प्रदर्शन विधि क्या है, लेकिन, केवल उस समूह में पदों पर लागू होने वाली शर्तों को दिखाएं।

उदाहरण के लिए, यदि मैं उत्पाद समूह 'महिला' में हूं, तो यह बाएं हाथ की ओर ब्रांड दिखाएगा, लेकिन केवल वे ब्रांड जो 'महिला' उत्पाद समूह में उत्पादों के लिए निर्दिष्ट हैं। जैसे ब्रांड 'फैंसी महिला कपड़े इंक' दिखाएगा, लेकिन 'मर्दाना मैनली लि' नहीं।

मुझे एक सामान्य उत्तर की आवश्यकता है, हालांकि मैं कपड़े के उत्पादों के उदाहरण के लिए खुश हूं, जिसका उपयोग किया जाना है, और मुझे पता है कि यह कैसे क्रूर बल द्वारा एक लालची एल्गोरिथ्म के साथ किया जाता है, लेकिन यह अविश्वसनीय रूप से बेकार है, और मुझे इस समाधान में कोई दिलचस्पी नहीं है हर पेज को कई सेकंड तक बढ़ा सकते हैं और इस प्रक्रिया में DB से पूर्ण रूप से सभी पदों को लोड करेंगे

संपादित करें: उदाहरण 2:

पिकाचु एक पीला पोकेमॉन है, और पीले टैग में है, लेकिन पिकाचू एक इलेक्ट्रिक पोकेमॉन भी है, इसलिए यह प्रकार के वर्गीकरण के इलेक्ट्रिक टैग में है। मैं केवल पोकेमोन के प्रकार कैसे दिखाऊंगा जो पीले टैग संग्रह में पीले होते हैं? उदाहरण के लिए सभी घास पोकेमॉन के हरे होने का मतलब है कि पीले रंग के संग्रह में एक घास मेनू आइटम नहीं होगा, लेकिन हरे रंग में होगा (हाँ मुझे पता है कि घास पोकेमॉन हैं जो हरे नहीं हैं)

जवाबों:


13

इसे सामान्य करने के लिए कर ए के सभी शर्तों को पुनः प्राप्त करने का मुद्दा है, जो कि कर बी के विशिष्ट कार्यकाल वाले पद हैं।

हालांकि यह कई चरणों में असंभव नहीं है और पदों के माध्यम से बहुत सारे लूपिंग (जो वास्तव में अक्षम होंगे), मुझे लगता है कि दक्षता के लिए एसक्यूएल से गुजरना उचित है।

इस पर मेरा रफ ले जाएगा:

/**
 * Get all terms of $tax_to taxonomy that posts in $term_from of $tax_from have.
 *
 * @param string $tax_from  taxonomy name
 * @param string $term_from term slug
 * @param string $tax_to    taxonomy name
 *
 * @return array|WP_Error
 */
function get_intersected_terms( $tax_from, $term_from, $tax_to ) {

    global $wpdb;

    $term_from = get_term_by( 'slug', $term_from, $tax_from );

    $query = "
    SELECT term_id FROM {$wpdb->term_taxonomy} WHERE taxonomy = '{$tax_to}' AND term_taxonomy_id IN (
        SELECT term_taxonomy_id FROM {$wpdb->term_relationships} WHERE object_id IN (
            SELECT object_id FROM {$wpdb->term_relationships} WHERE term_taxonomy_id = {$term_from->term_taxonomy_id}
        )
    )
    ";

    $term_ids = $wpdb->get_col( $query );

    if( empty( $term_ids) )
        return array();

    return get_terms( $tax_to, array( 'include' => $term_ids ) );
}

// example
var_dump( get_intersected_terms( 'category', 'cat-a', 'post_tag' ) );
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.