تغيير سعر الشحن بناء على وزن الطلب في سلة الشراء بطريقتين مختلفتين

أحد أهم الأشياء التي من الضروري الإهتمام بها داخل متجرك الإلكتروني هي تحديد وتعيين أسعار الشحن بشفافية كبيرة أمام زبائنك، فهي تساعد على دعم شفافية أسعار الشحن عند العملاء بحسب مكان استلام المنتج.

في هذا المقالة، نتعرف على كيفية تغيير الأسعار بناء على وزن المنتج، باستخدام عدة طرق تساعدك على تفعيل هذا الخيار في متجرك بسهولة، لأجل المساعدة على تحسين خيارات الشحن في متجرك.

طرق تغيير الشحن بناء على الوزن

بدايةً ستحتاج إلى تعيين أوزان المنتجات داخل متجرك الووكومرس حتى يتفهم النظام وزن المنتجات التي سيعتمد عليها لأتمتتة إظهار سعر الشحن بحسب المكان المحدد، وذلك من داخل صفحة تحرير المنتج وتحديداً من تبويب (الشحن):

ثم تحديد وزن المنتج بوحدة الكيلو جرام.

1- إضافة Table Rate Shipping Method 

واحدة من أشهر إضافات ووردبريس التي تساعدك على تغيير سعر الشحن للمنتجات بناء على الوزن هي إضافة Table rate Shipping والتي سوف نقوم بالتطبيق العملي باستخدامها. 

تساعد هذه الإضافة على تفعيل خاصية تغيير سعر شحن المنتجات بناء على وزنها، وسوف نقوم بشرح الخطوات العملية لاستخدام الاضافة في تفعيل هذه الميزة داخل المتجر.

بعد تنصيب وتفعيل الإضافة على الووردبريس، توجه إلى تبويب ووكومرس للبدء وقم بالدخول إلى تبويب الشحن للبدء في تخصيص إعدادات تغيير سعر الشحن استناداً إلى وزن المنتجات:

داخل تبويب الشحن، قم بالدخول إلى تبويب (مناطق الشحن)، وقم بكتابة اسمًا لمناطق الشحن التي ترغب في توفير الشحن إليها، ثم قم بكتابة الدول أو البلدان أو المناطق التي سيتم تطبيق تغيير الشحن عليها، وفي نهاية التبويب قم بالنقر على زر (أضف طريقة شحن): 

سوف يفتح لك تبويبًا خاصًا بتحديد طريقة الشحن المطلوبة، وبالتأكيد ستقوم بالنقر على خيار Flexible shipping وهذا الخيار ظهر بعد تنصيب إضافة Table rate Shipping، وهو الذي سيسمح لنا بتعيين تغيير أسعار الشحن إلى تلك المناطق بناء على وزن المنتجات المطلوبة:

ستفتح أمامك صفحة إعدادات خيارات أسعار الشحن، والتي تقوم فيها بتعيين بعض الإجراءات العامة، مثل تعيين عنوان لطريقة الشحن، وهذا العنوان سوف يظهر للعملاء داخل صفحة السلّة:

بعد ذلك تجد تبويب (حساب السلّة) والذي من خلاله يمكنك اختيار طريقة حساب اسعار الشحن سواء بناءً على إجمالي الوزن الخاص بسلّة المشتريات، أو بناءّ على وزن المنتج المنفرد، وهنا سوف نختار (قيمة سلّة المشتريات) ليتم تعيين اسعار الشحن المتغيرة بناء على القيمة الإجمالية لوزن سلّة المشتريات:

في نهاية الصفحة ستجد تبويب (قواعد حساب تكلفة الشحن) والذي من خلاله يمكنك البدء في تعيين قواعد أسعار الشحن المتغيرة، حيبث تقوم أولا بتحديد الظرف الخاص بالوزن، ثم تقوم بكتابة التكلفة الخاصة به، ينقسم هذا التبويب إلى جزئين كما هو موضّح: 

  1. الظروف: هنا تقوم بتعيين الظرف الخاص بوزن المنتج، فمثلاً يمكنك اختيار الظرف من وزن 1 كيلوجرام وحتى 5 كيلو جرام، بنفس الطريقة تستطيع إدخال عدد لا نهائي من ظروف وحالات الأوزان المتغيرة للمنتجات، بحيث ستقوم بتعيين سعر شحن لكل حالة من الحالات التي يتطابق فيها وزن المنتجات مع الظروف التي قمت بتعيينها.
  2. التكاليف: هنا ستكتب تكلفة طلب ظرف من الظروف الخاصة بأوزان المنتجات، فمثلاً عند الظرف الأول الذي يبدأ من وزن 1 كيلو جرام، وحتى 5 كيلو، يمكنك كتابة تكلفة الشحن 10 دولار، وهكذا بجوار كل ظرف للوزن تستطيع تعيين سحن الشحن الخاص به.

بعد الإنتهاء من تعيين حالات الأوزان والتكلفة الخاصة بكل وزن، لا تنس حفظ التغييرات في الصفحة.

بعدما تقوم بتعيين أسعار الشحن المتغيّرة بناء على أوزان المنتجات المطلوبة، سيكون العميل قادر على رؤية إشعار الشحن داخل سلّة المشتريات، والذي يتم فيها احتساب سعر الشحن تلقائياً بناء على وزن المنتج:

2- إضافة Weight Based Shipping 

إلى جانب الإضافة السابقة، توجد كذلك إضافة أخرى متخصّصة في تعيين أسعار الشحن المتغيرة بناء على وزن المنتجات، وهي إضافة Weight based shipping التي توفّر لك خيارات ستكون كافية لتعيين تغيير أسعار شحن المنتجات استناداً إلى الوزن الخاص بالطلب تلقائياً، وهذه أهم الخيارات التي توفّرها الإضافة: 

  • إمكانية إضافة طرق شحن تتغيّر أسعارها بناء على وزن المنتج. 
  • خيار تعيين الشحن الشحن عند الوصول إلى وزن معين للمنتجات داخل السلّة. 
  • يمكنك إضافة أكثر من سعر متغيّر بناء على وزن المنتجات. 
  • تستطيع تعيين سعر الشحن للمنتجات التي تتجاوز وزن معين.
  • الإضافة متوافقة مع ووكومرس. 

أحد المميزات التي توفّرها هذه الإضافة هي إمكانية تعيين أسعار الشحن المتغيرة على حسب كل بلد، بمعنى أنه يمكن تعيين سعر شحن المنتجات (ذات وزن 5 كيلو) بسعر 5$ للزبائن في دولة مصر، وتعيين سعر الشحن لنفس الوزن بقيمة 10$ للزبائن في دولة الإمارات على سبيل المثال، وبالتالي توفّر خيارات متطورة لتعيين أسعار الشحن المتغيّرة إذا كنت تستقبل طلبات من زبائن في أكثر من دولة، وهو ما يساعدك على التحكم بصورة إحترافية في أسعار الشحن. 

توفر الاضافة نسخة مدفوعة منها تحتوي على خيارات متطورة أكثر فيما يتعلق بتغيير أسعار الشحن بناء على الوزن، مثل إمكانية تعيين سعر شحن مجاني لبعض المناطق، أو استثناء بعض المناطق من تطبيق الشحن المجاني عليها.

كذلك في نسختها المدفوعة توفر خيارات مثل تعيين الشحن المجاني على المنتجات التي توجد داخل تصنيف ما داخل المتجر دوناً عن باقي التصنيفات الأخرى، وغيرها من الخيارات التي تساعدك على التحكم في أسعار الشحن بطريقة دقيقة للغاية.

3- تغيير شحن الشحن بناء على الوزن دون إضافات

إلى جانب إضافات ووردبريس التي تساعدك على تفعيل خيارات السعر بناء على وزن الطلب في سلّة الشراء، هناك طريقة أخرى باستخدام الكود البرمجي الذي يمكن إضافته داخل ملف الأكواد المصدري لقالب الووردبريس مباشرة. 

ملحوظة: قبل التعديل على الكود البرمجي للموقع ننصحك بأخذ نسخة احتياطية للموقع بالكامل تحسباً لأي خطأ وارد. 

قبل كتابة الكود البرمجي، تحتاج اولاً لإنشاء منطقة شحن داخل المتجر، وتعيين طرق الشحن المختلفة التي سيتم تغيير الأسعار بناء عليها. 

قم بالدخول إلى تبويب (مناطق الشحن) في إعدادات ووكومرس، ثم قم بإنشاء منطقة شحن وليكن على سبيل المثال (مصر)، بعد ثم قم بإنشاء 3 طرق شحن مختلفة كالتالي:

  1. أقل من 1ك: هذه سنقوم بتعيين سعر خاص بالمنتجات التي وزنها أقل من 1 كيلوجرام. 
  2. أقل من 5ك: هذه سنقوم بتعيين سعر خاص بالمنتجات التي تزن أقل من 5 كيلو.
  3. أكبر من 5ك: ستكون خاصة بالمنتجات التي يزيد وزنها عن 5 كيلو. 

بعد ذلك قم بالنقر على كل طريقة من طرق الشحن الثلاثة، وقم بتعيين سعر الشحن الخاص بها وليكن الأول 10ج والثاني 20 والثالث 30، بهذه الطريقة: 

بعد حفظ التغييرات، ستظهر طرق الشحن الثلاثة داخل سلّة المشتريات، وستلاحظ ظهور الثلاثة طرق مع بعضهم: 

نحن لا نرغب في أن تظهر كل طرق الشحن بهذه الطريقة، وإنما المطلوب هو أن تظهر طريقة الشحن والسعر الخاص بوزن المنتجات المضافة داخل السلّة بالفعل، ويتم إخفاء باقي الطرق الأخرى، صحيح؟

إذا سنقوم بكتابة كود برمجي وظيفته جعل الأمر يتم بصورة تلقائية، بحيث يقوم بحساب الوزن في السلّة تلقائياً، ثم يقوم بإظهار الطريقة الوحيدة التي ترتبط بهذا الوزن وبجوارها السعر. 

لكي نبدأ في كتابة الكود البرمجي بصورة صحيحة، نحتاج إلى الحصول على الرقم التعريفي البرمجي لكل طريقة من طرق الشحن، لذلك قم بتمرير الماوس على كل طريقة منهم ثم أنقر بالماوس يميناً لتظهر لك قائمة الخيارات، اختر منها خيار الفحص : 

سيظهر لك الرقم التعريفي بهذا الشكل flat_rate:2 كما هو موضّح بالصورة، وبالتأكيد قد تختلف الأرقام عندك وبالتالي سوف تستخدم نفس الأرقام الموجودة في موقعك، وبالنسبة لي فقد حصلت الأرقام التعريفية لطرق الشحن الثلاثة كالآتي:

  • الأول flat_rate:1
  • الثاني  flat_rate:2 
  • والثالث flat_rate:3 

بعد ذلك قم بالتوجه إلى قائمة (المظهر) داخل لوحة تحكم ووردبريس، ثم تبويب (تحرير ملف القالب)، وقم بالدخول إلى ملف functions.php والصق الكود التالي داخل الملف، مع مراعات تغيير الاسم التعريفي الخاص بكل  طريقة شحن إلى الاسم التعريفي الخاص بها داخل موقعك:

<!-- wp:paragraph -->
<p>add_filter( 'woocommerce_package_rates', 'storeapps_woocommerce_tiered_shipping', 9999, 2 );</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>function storeapps_woocommerce_tiered_shipping( $rates, $package ) {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;&nbsp;&nbsp;if ( WC()-&gt;cart-&gt;get_cart_contents_weight() &lt; 1 ) {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( isset( $rates['flat_rate:2'] ) &amp;&amp; isset( $rates['flat_rate:3'] ) ) unset( $rates['flat_rate:2'], $rates['flat_rate:3'] );</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;&nbsp;&nbsp;} elseif ( WC()-&gt;cart-&gt;get_cart_contents_weight() &lt; 5 ) {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( isset( $rates['flat_rate:1'] ) &amp;&amp; isset( $rates['flat_rate:3'] ) ) unset( $rates['flat_rate:1'], $rates['flat_rate:3'] );</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;&nbsp;&nbsp;} else {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( isset( $rates['flat_rate:1'] ) &amp;&amp; isset( $rates['flat_rate:2'] ) ) unset( $rates['flat_rate:1'], $rates['flat_rate:2'] );</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;&nbsp;&nbsp;return $rates;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>}</p>
<!-- /wp:paragraph -->

فكرة الكود السابق بإختصار هي استخدام إحدى خطافات الووردبريس add_filter والذي قمنا بداخله بإنشاء دالة وظيفتها عمل حالة شرطية على الوزن الخاص بالمنتجات، وتقوم بتتبع حالات الوزن باستخدام الدالة get_cart_contents_weigh التي تقوم بعمل حالة شرطية إذا كان الوزن أقل من 1 كيلو، فتقوم بعدها مباشرة بإخفاء السعر الاسعار الأخرى باستخدام الدالة unset التي نضع داخله الرقم التعريفي للسعر المراد إخفاءه، وبالتالي يظهر فقط سعر الشحن المرتبط بالوزن الخاص به. 

لا تنس حفظ الملف بعد لصق الأكواد داخله:

الأن سيتم احتساب الوزن تلقائياً داخل سلّة المشتريات، وإظهار طريقة الشحن ذات السعر المتوافق مع الوزن:

بنفس الطريقة يمكنك تغيير الأسعار والأوزان التي ترغب بها كيفما تشاء داخل متجرك لكي تتناسب مع نوعية المنتجات وقيمة الأوزان الخاصة بها. 

وبهذا نكون قد تعرفنا على طرق تغيير سعر شحن المنتجات بناء على أوزانها، وهي مفيدة لأصحاب المتاجر الذين لديهم منتجات متعددة الأوزان خصوصًا المتاجر التي تبيع منتجات ضخمة.