حذف فیلدهای غیرضروری از صفحه تسویه حساب ووکامرس

hosseinshahraji

تازه وارد
23/4/22
2
0
1
سلام
من افزونه ووکامرس فارسی رو نصب دارم (افزونه فارسی ساز ووکامرس موجود در مخزن وردپرس) و میخوام فیلدهای غیرضروری برای محصولات دانلودی رو از فرم صورتحساب پاک کنم اما مسئله اینه که وقتی گزینه «حذف فیلدهای غیرضروری« رو فعال میکنم برای محصولات فیزیکی هم آدرس و استان و ... حذف میشه. در واقع محصولی دارم که متغیره و به سه حالت: 1-فیزیکی 2-دانلودی 3-فیزیکی و دانلودی به فروش میرسه. افزونه Digital Goods for Woocommerce Checkout رو هم نصب کردم ولی مشکلش اینه که در حالت سوم یعنی حالت ترکیبی دانلودی و فیزیکی مثل محصولات دانلودی عمل میکنه و فیلدها رو پاک میکنه
من میخوام برای دانلودی ها فقط پاک بشه و برای فیزیکی و فیزیکی-دانلودی وجود داشته باشه و علاوه بر این اگه کاربر تو سبد خریدش فرضا 10 تا محصول داره که 9تاش دانلودی و 1 فیزیکیه بازم آدرس رو نشون بده.
ممنون میشم کمکم کنین خیلی دنبالشم
 

Mohammad

مدیر انجمن
عضو کادر مدیریت
6/4/08
15,400
478
83
33
PersianScript
ساختار ووکامرس طوری هست در صورتی که فایل قابل دانلود باشه. حالت های دیگر رو در نظر نمیگیره...
نمیشه حالتی به طور میکس یا بینابین ایجاد کرد.
 

hosseinshahraji

تازه وارد
23/4/22
2
0
1
نمیشه کدش رو نوشت؟
که مثلا چک کنه اگه تیک «مدیریت انبارداری» برای حداقل یکی از محصوالت سبد خرید خورده بود، بیاد فیلدها رو نمایش بده درغیراینصورت حذف کنه
 

mohamad_a226

کاربر عضو
20/4/09
131
9
18
36
کرج
noandishaan.com
سلام
من افزونه ووکامرس فارسی رو نصب دارم (افزونه فارسی ساز ووکامرس موجود در مخزن وردپرس) و میخوام فیلدهای غیرضروری برای محصولات دانلودی رو از فرم صورتحساب پاک کنم اما مسئله اینه که وقتی گزینه «حذف فیلدهای غیرضروری« رو فعال میکنم برای محصولات فیزیکی هم آدرس و استان و ... حذف میشه. در واقع محصولی دارم که متغیره و به سه حالت: 1-فیزیکی 2-دانلودی 3-فیزیکی و دانلودی به فروش میرسه. افزونه Digital Goods for Woocommerce Checkout رو هم نصب کردم ولی مشکلش اینه که در حالت سوم یعنی حالت ترکیبی دانلودی و فیزیکی مثل محصولات دانلودی عمل میکنه و فیلدها رو پاک میکنه
من میخوام برای دانلودی ها فقط پاک بشه و برای فیزیکی و فیزیکی-دانلودی وجود داشته باشه و علاوه بر این اگه کاربر تو سبد خریدش فرضا 10 تا محصول داره که 9تاش دانلودی و 1 فیزیکیه بازم آدرس رو نشون بده.
ممنون میشم کمکم کنین خیلی دنبالشم
سلام. این کد رو تو فانکشن قالب میتونی قرار بدی:
PHP:
add_filter( 'woocommerce_checkout_fields' , 'Noandishaan_Checkout' );
function Noandishaan_Checkout( $fields ) {
    
    global $woocommerce;
    $hasPhysicalProduct = false;
    
    if ( ! empty( $woocommerce->cart->cart_contents ) ) {
        
        $cart = $woocommerce->cart->get_cart();
        foreach ( $cart as $key => $values ) {

            $_product = get_product( $values['variation_id'] ? $values['variation_id'] : $values['product_id'] );

            if ( ! empty( $_product ) && $_product->exists() && $values['quantity'] > 0 ) {
                
                if ($_product->virtual == 'no' && $_product->downloadable == 'no') {
                    $hasPhysicalProduct = true;
                    break;
                }
            }
        }
    }

    if ($hasPhysicalProduct == false) {
        unset($fields['billing']['billing_address_1']);
        unset($fields['billing']['billing_address_2']);
        unset($fields['billing']['billing_company']);
        unset($fields['billing']['billing_city']);
        unset($fields['billing']['billing_postcode']);
        unset($fields['billing']['billing_country']);
        unset($fields['billing']['billing_state']);
    }
    return $fields;
}