سامو
سامو
خواندن ۲ دقیقه·۲ سال پیش

فروش اینترنتی محصولات به صورت کیلویی و عددی در وردپرس

سال 97 با یک چالش مواجه شدم، باید فروشگاه وردپرسی راه می‌انداختم که بتوان همزمان در آن محصولات کیلویی و عددی را برای فروش قرارداد. به عنوان مثال دسته بندی آجیل باید به صورت کیلویی و دسته بندی کنسرو به صورت عددی محاسبه و فروخته می‌شد.

تجربه کاربری برای جلوگیری از سردرگمی کاربر و نارضایتی خیلی مهم بود. مثلا فرض کنید مشتری به خیال خودش 1 محصول را به سبد خرید اضافه می‍کرد، اما در واقع 1 کیلوگرم از آن محصول را به سبد خرید اضافه کرده بود و چون این مطلب را نمی‌دانست، قیمت محصول به نظرش بسیار گران بود!

با ذکر چند نکته راه حل خودم را برای این سناریو شرح می‌دهم:

  1. این الزاما بهترین راه حل نیست اما برای سال‌ها به خوبی کار کرده.
  2. قطعا می‌شود کدهای زیر را به شکل بهینه تری نوشت.

ویرایش صفحه تک محصول

قسمت قیمت:

لازم است که در کنار قیمت، مشخص کنیم که واحد قیمت دهی محصول چیست؟

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

remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10); add_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 12); add_filter('woocommerce_single_product_summary', 'price_lable', 10); add_filter('woocommerce_after_shop_loop_item_title', 'price_lable', 8); function price_lable($price){ if (has_term('آجیل', 'product_cat') || has_term('خشکبار', 'product_tag')) { $text = __('هر کیلو:'); } else { $text = __(' هر عدد:');} echo '<span class=&quotprice&quot>' . $text . '</span> ' . $price;}

قسمت ورودی تعداد سفارش:

در کنار قسمت ورودی تعداد جهت سفارش، لازم است کاربر بداند که عددی که انتخاب میکند چه واحدی دارد؟ برای اینکار، قبل از این ورودی، یک span جدید ایجاد می‌کنیم که مشروط به دسته بندی یا برچسب محصول متغییر است.

add_action('woocommerce_before_add_to_cart_quantity', 'quantity_lable'); function quantity_lable(){ if (has_term('آجیل', 'product_cat') || has_term('خشکبار', 'product_tag')) { ?> <span class=&quothowmuch&quot> <?php echo &quotچند کیلو؟&quot ?></span> <?php } else { ?><span class=&quothowmuch&quot> <?php echo &quotچند عدد؟&quot ?></span> <?php } }

قسمت موجودی انبار:

add_filter( 'woocommerce_get_availability', 'stock_lable', 10, 2 ); function stock_lable( $availability, $_product ) { $stock_quantity = $_product->get_stock_quantity(); if (has_term('جعبه فست فود', 'product_cat') || has_term('سینی رستورانی', 'product_tag')) { $text = __('کیلو موجود در انبار '); $availability['availability'] = sprintf( ' %s کیلو موجود در انبار', $stock_quantity ); } else { $text = __('عدد موجود در انبار '); $availability['availability'] = sprintf( ' %s عدد موجود در انبار', $stock_quantity ); } return $availability; }

حمل و نقل:

اگر هزینه حمل و نقل محصولات را بر اساس وزن محاسبه می‌کنید، در قسمت حمل و نقل هر محصول، وزن محصولات کیلویی را باید 1 کیلوگرم و وزن محصولات عددی را معادل وزن واقعی هر عدد از آن قرار دهید.

وردپرسووکامرسهوک وردپرسحمل نقلُسبد خرید
کسی که سعی میکند موثر باشد.
شاید از این پست‌ها خوشتان بیاید