मेरे पास कई उत्पाद हैं लेकिन चित्र वास्तव में श्रेणी के चित्र होंगे। मैं चाहता हूं कि उत्पाद में चित्रित छवियां स्वचालित रूप से उस श्रेणी की छवि हों, जिसमें वे हैं।

नीचे दिए गए कोड में कोई समस्या है।

function default_category_featured_image() {
global $post;
$featured_image_exists = has_post_thumbnail($post->ID);
              
if (!$featured_image_exists)  {
$attached_image = get_children( "post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1" );

if ($attached_image) {
                          
foreach ($attached_image as $attachment_id => $attachment) {
set_post_thumbnail($post->ID, $attachment);
}}
else if ( in_category('61') ) {
    set_post_thumbnail($post->ID, '4436'); //arçelik
}
else if ( in_category('64') ) {
    set_post_thumbnail($post->ID, '4435'); //beko
}
else if ( in_category('59') ) {
    set_post_thumbnail($post->ID, '4434'); //LG
}
else if ( in_category('60') ) {
    set_post_thumbnail($post->ID, '4458'); //Philips
    }
else if ( in_category('66') ) {
    set_post_thumbnail($post->ID, '4160'); //Profilo
        }
else if ( in_category('58') ) {
    set_post_thumbnail($post->ID, '4159'); //samsung
            }
else if ( in_category('65') ) {
    set_post_thumbnail($post->ID, '4160'); //seg
                        }
else if ( in_category('62') ) {
    set_post_thumbnail($post->ID, '4433'); //sony
                                    }
else if ( in_category('63') ) {
    set_post_thumbnail($post->ID, '4160'); //vestel
                                                }
else {
set_post_thumbnail($post->ID, '4435'); //genel
wp_reset_postdata();
                               }
                               
                           }
                        
      }
add_action('the_post', 'default_category_featured_image');
1
R. GOKSU 8 फरवरी 2021, 17:20

1 उत्तर

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

आप init हुक का उपयोग करके उत्पाद थंबनेल सेट कर सकते हैं।

सुनिश्चित करें कि आप programmatically_set_thumbnail_to_product फ़ंक्शन को फ़ंक्शन.php फ़ाइल के पूर्ण हो जाने के बाद उससे निकालें

प्रतिस्थापित किया जाने वाला डेटा:

  • $thumbnail_ids सरणी की genel कुंजी के स्थान पर उत्पाद श्रेणी आईडी "जेनल" दर्ज करें।

इसे अपनी सक्रिय थीम के functions.php में जोड़ें।

// updates the thumbnails of all products based on the product category image
add_action( 'init', 'programmatically_set_thumbnail_to_product' );
function programmatically_set_thumbnail_to_product() {

    // returns the ids of all products
    $ids = wc_get_products(
        array(
            'return' => 'ids',
            'limit' => -1
        )
    );

    // set the ids of the product categories
    $thumbnail_ids = array(
        58      => 4159, // Samsung
        59      => 4434, // LG
        60      => 4458, // Philips
        61      => 4436, // Arçelik
        62      => 4433, // Sony
        63      => 4160, // Vestel
        64      => 4435, // Beko
        65      => 4160, // Seg
        66      => 4160, // Profilo
        'genel' => 4435  // Genel (set the id of the product category "Genel" as a key)
    );

    // for each product
    foreach ( $ids as $product_id ) {
        // for each product category
        foreach ( $thumbnail_ids as $cat_id => $thumbnail_id ) {
            // check if the product belongs to a product category
            if ( has_term( $cat_id, 'product_cat', $product_id ) ) {
                // if yes, set the product thumbnail
                set_post_thumbnail( $product_id, $thumbnail_id);
                break;
            }
        }
    }

}

यह फ़ंक्शन संबंधित उत्पाद श्रेणी के थंबनेल के आधार पर सभी उत्पादों के थंबनेल सेट करेगा।

एक बार functions.php में जोड़े जाने के बाद उत्पाद सूची पृष्ठ को फ़्रंटएंड में ताज़ा करें (उदाहरण के लिए) और आप देखेंगे कि सभी छवियां बदली/सेट हो जाएंगी।

फिर इसे functions.php से हटा दें और इस अन्य फ़ंक्शन को जोड़ें।

जब भी कोई उत्पाद सहेजा या अपडेट किया जाता है (स्वचालित रूप से नए उत्पादों की छवि सेट करने के लिए) नीचे दिए गए कार्य को निष्पादित किया जाएगा।

प्रतिस्थापित किया जाने वाला डेटा:

  • $thumbnail_ids सरणी की genel कुंजी के स्थान पर उत्पाद श्रेणी आईडी "जेनल" दर्ज करें।

इसे हमेशा functions.php में जोड़ें।

// when a product is saved or updated it sets the image based on the product category
add_action( 'save_post', 'programmatically_set_thumbnail_to_new_product' );
function programmatically_set_thumbnail_to_new_product( $product_id ) {

    // set the ids of the product categories
    $thumbnail_ids = array(
        58      => 4159, // Samsung
        59      => 4434, // LG
        60      => 4458, // Philips
        61      => 4436, // Arçelik
        62      => 4433, // Sony
        63      => 4160, // Vestel
        64      => 4435, // Beko
        65      => 4160, // Seg
        66      => 4160, // Profilo
        'genel' => 4435  // Genel (set the id of the product category "Genel" as a key)
    );
    
    // for each product category
    foreach ( $thumbnail_ids as $cat_id => $thumbnail_id ) {
        // check if the product belongs to a product category
        if ( has_term( $cat_id, 'product_cat', $product_id ) ) {
            // retrieve product thumbnail id
            $current_thumbnail_id = get_post_thumbnail_id( $product_id );
            // if it is different from that of the product category
            if ( $current_thumbnail_id == false || $current_thumbnail_id != $thumbnail_id ) {
                // set the product thumbnail
                set_post_thumbnail( $product_id, $thumbnail_id );
                break;
            }
        }
    }
}

दोनों कोड का परीक्षण किया गया है और काम कर रहे हैं।

1
Vincenzo Di Gaetano 9 फरवरी 2021, 00:18
उत्तर के लिए धन्यवाद, मैं पागल होने वाला था... फिर से बहुत-बहुत धन्यवाद।
 – 
R. GOKSU
9 फरवरी 2021, 11:22