حذف فیلدهای غیرضروری از محصولات دانلودی ووکامرس
سلام . یکی از دلایلی که معمولا از Easy Digital Downloads برای فروش محصولات مجازی استفاده میکنیم ساده بودن فرایند خرید است . یعنی صرف نظر از کارهایی که شما بعنوان مدیر سایت باید انجام بدید، Frontend و رابط کاربری ایزی دیجیتال دانلود هم بسیار کاربر پسند تر هست . چون مشتری خیلی راحت محصولشو به سبد خرید اضافه میکنه و بعدش با پر کردن فیلد نام و ایمیل به صفحه پرداخت هدایت میشه و بعد از پرداخت هم محصولشو دانلود میکنه.
حالا ما قصد داریم این سادگی فرایند خرید رو از EDD به ووکامرس هم منتقل کنیم. طبق آموزش زیر اگه تمام محصولات موجود داخل سبد خرید مشتری از نوع محصولات مجازی یا دانلودی باشد در صفحه تسویه فقط فیلدهای نام، ایمیل و شماره تلفن ( بخاطر استفاده از پیامک ووکامرس ) نیاز است. خب طبیعتا اگه حداقل یک محصول فیزیکی تو سبد خرید باشه باید این فیلدها باقی بمونن و حذف نشن.
خب ابتدا به قسمت زیر مراجعه کنید:
مدیریت وردپرس >> ووکامرس >> پیکربندی >> محصولات >> محصولات دانلودی .
از قسمت محدودیت های دسترسی، تیک “دانلودها نیازمند ورود هستند” رو بردارید و برعکسش تیک “دسترسی به محصولات دانلودشدنی بعد از پرداخت” رو بزنید.
حالا هم کد زیر رو داخل functions.php قالبتون و خط آخر قرار بدید و تمام. البته اگه خط آخر کد های فانکشنتون عبارت <؟ وجود داشت باید اول این عبارت رو حذف کنید و بعد کدهای زیر رو قرار بدید. سعی کنید بعد قرار دادن کد های زیر فاصله یا space های اضافی رو از کدهای فانکشن مخصوصا خطوط آخر حذف کنید.
add_filter( 'woocommerce_checkout_fields' , 'WooCommerce_EDD_Checkout' ); function WooCommerce_EDD_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) { //unset($fields['billing']['billing_last_name']); //unset($fields['billing']['billing_phone']); 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; }
توجه : اگه خواستید که فیلد شماره موبایل رو هم حذف کنید کافیه از ۴ خط مونده به آخر کد های بالا عبارت // رو حذف کنید. (آن ها را از حالت کامنت در بیاورید) اطلاعات بیشتر در مورد شخصی سازی فیلدهای تسویه حساب رو هم از لینک زیر مطالعه بفرمایید:
Source : WebForest
12 thoughts on “حذف فیلدهای غیرضروری از محصولات دانلودی ووکامرس”
بسیار عالی بود مقاله تون از کد استفاده کردم کار منو راه انداختین
با تشکر
بسیار جالب و مفید بود. مرسی
تشکر خیلی خوب بود
فقط یک سوال
من اگر فیلد ی مثل اسم شرکت و یا ….. را درهنگام خرید فیزیکی حذف کنم بایدبه چه صورت عمل کنم
سلام
از لینک قرار داده شده در پایان مطلب جهت مطالعه مستندات استفاده کنید. مثلا برای شرکت باید فیلد billing_company را حذف کنید.
بله من مستندات را مشاهده کردم ولی برخی از فیلد ها مانند شهر ، کدپستی و محله در زمان سفارش یک محصول دانلودی حذف نمی شوند .
میشه بیشتر راهنمایی کنید.
سلام
فیلد های آدرس و کشور وجود دارند یا حذف شده اند؟
شهر ، کدپستی و محله دارند
وجود دارند
به نظر می رسد کد اجرا نمی شود. از اجرای کد اطمینان دارید؟
مشکل کد php با افزونه Persian Woocommerce Shipping می باشد.
امکانش هست که در حل این مشکل من را راهنمایی کنید.
سلام ببخشید میشه کد را ویرایش کرد تا مشکلی که با افزونه داره برطرف بشه؟
سلام
بله حتما. خطای آن را متوجه شده اید؟ از طریق فرم تماس با ما در ارتباط باشید تا مشکل را بررسی و حل کنیم.