من رفتم سربازی اگر محتوای منو دوست داشتید و بدردتون خورد از من حمایت مالی کنید

تنظیم محصول متغیر پیشفرض پس از موجودی

تنظیم محصول متغیر پیشفرض پس از موجودی
تنظیم محصول متغیر پیشفرض پس از موجودی

تنظیم محصول متغیر پیشفرض پس از موجودی

اگر در وبسایت ووکامرسی خود یک ویژگی پیش‌فرض را به عنوان محصول پیش‌فرض انتخاب کنید بعد از اتمام موجودی آن کاربر در صفحه محصول کلمه‌ی ناموجود را می‌بیند و بهتر است که محصول پیش‌فرض دیگری را به عنوان ویژگی متغیر آن تنظیم کرد. در این نوشته به تغییر یک محصول موجود پیش‌فرض بعد از اتمام موجودی پیش‌فرض آن خواهیم پرداخت.

 

تنظیم محصول متغیر پیشفرض پس از موجودی

برای اینکه یک متغیر پیش‌فرض را جایگزین متغیر پیش‌فرض فعلی در صفحه محصول کنید که بعد از اتمام موجودی یک متغیر پیش‌فرض موجود در آن به عنوان متغیر پیش‌فرض است از قطعه کد زیر در فایل functions.php قالب فعال فعلی خود استفاده کنید:

add_action('template_redirect', 'set_default_variation_on_load', 10);

function set_default_variation_on_load() {
    if (!is_product()) {
        return;
    }

    global $post;
    $product = wc_get_product($post->ID);

    if ($product && $product->is_type('variable')) {
        $default_attributes = $product->get_default_attributes();
        $available_variations = $product->get_available_variations();
        $new_default_attributes = $default_attributes;
        $is_change = false;

        foreach ($available_variations as $variation) {
            if ($variation['is_in_stock']) {
                $variation_attributes = $variation['attributes'];

                foreach ($default_attributes as $attribute_name => $default_value) {
                    $attribute_key = 'attribute_' . $attribute_name;
                    if (isset($variation_attributes[$attribute_key]) && $variation_attributes[$attribute_key] !== '') {
                        $new_default_attributes[$attribute_name] = $variation_attributes[$attribute_key];
                    } else {
                        break;
                    }
                }
            }
        }

        foreach ($new_default_attributes as $attribute_name => $new_value) {
            if (!isset($default_attributes[$attribute_name]) || $default_attributes[$attribute_name] !== $new_value) {
                $is_change = true;
                break;
            }
        }

        if ($is_change) {
            update_post_meta($product->get_id(), '_default_attributes', $new_default_attributes);
            wc()->session->set('default_attributes', $new_default_attributes);
        }
    }
}

 

اگر سوال دیگری در ارتباط با وردپرس و ووکامرس دارید در بخش نظرات همین نوشته برای ما بنویسید.

برای امتیاز به این نوشته کلیک کنید!
[کل: 1 میانگین: 5]