
هذا الكود يمكنك من التحكم في زر الطلب وعرض وزن الطلب في سلة التسوق وعلى صفحة مراجعة الطلب في WooCommerce. دعونا نلقي نظرة على كل قسم في الشيفرة:
تعديل زر الطلب بناءً على وزن الطلب:
كود عرض وزن الطلب والتحكم في زر الطلب
add_filter( 'woocommerce_order_button_html', 'replace_order_button_html', 10, 2 );
function replace_order_button_html( $order_button ) {
global $woocommerce;
if(WC()->customer->get_billing_country() == 'SA'){
if( $woocommerce->cart->cart_contents_weight < 3 ) return $order_button;
$order_button_text = __( "وزن الطلب يجب ألا يتعدى 3 كجم", "woocommerce" );
$style = ' style="color:#fff;pointer-events: none;cursor:not-allowed;background-color:#999;"';
return '<a class="button alt"'.$style.' name="woocommerce_checkout_place_order" id="place_order" >' . esc_html( $order_button_text ) . '</a>';
}
return $order_button;
}
هذا الجزء يستبدل زر الطلب إذا كان وزن الطلب يتجاوز 3 كيلوغرامات في المملكة العربية السعودية.
عرض وزن الطلب في سلة التسوق وعلى صفحة مراجعة الطلب:
function wcw_cart() {
global $woocommerce;
if ( WC()->cart->needs_shipping() ) : ?>
<tr class="shipping">
<th><?php _e( 'وزن الطلب', 'woocommerce-cart-weight' ); ?></th>
<td><span class="label"><?php echo $woocommerce->cart->cart_contents_weight . ' ' . get_option( 'woocommerce_weight_unit' ); ?></span></td>
</tr>
<?php endif;
}
add_action( 'woocommerce_cart_totals_after_order_total', 'wcw_cart' );
add_action( 'woocommerce_review_order_after_order_total', 'wcw_cart' );
هذا الجزء يقوم بعرض وزن الطلب في سلة التسوق وعلى صفحة مراجعة الطلب. يتم فحص ما إذا كانت الطلبات بحاجة إلى الشحن قبل عرض الوزن.
باستخدام هذا الكود، يمكنك تحكم دقيق في زر الطلب وعرض وزن الطلب في متجر WooCommerce الخاص بك.
تعديل زر الطلب بحسب وزن الطلب
يتم استبدال زر الطلب في صفحة الخروج إذا كان وزن الطلب يتجاوز 3 كجم في المملكة العربية السعودية. يستخدم الكود فلتر woocommerce_order_button_html لتغيير نص الزر وتطبيق تنسيق يمنع النقر.
يتم التحقق من بلد العميل عبر WC()->customer->get_billing_country()، ثم مقارنة وزن السلة باستخدام $woocommerce->cart->cart_contents_weight.
إذا كان الوزن أقل من الحد، يبقى الزر كما هو؛ وإلا، يظهر زر غير قابل للنقر مع رسالة توضح الحد الأقصى للوزن.
عرض وزن الطلب في السلة وصفحة مراجعة الطلب
يضيف الكود عموداً جديداً في جدول إجمالي السلة يوضح وزن الطلب، مع وحدة الوزن المستخدمة في إعدادات WooCommerce.
يتم ذلك عبر إضافة دالة wcw_cart() وتفعيلها في الأحداث woocommerce_cart_totals_after_order_total وwoocommerce_review_order_after_order_total.
يتم التحقق أولاً من أن الطلب يحتاج إلى شحن قبل عرض الوزن، لتجنب إظهار الوزن في الطلبات التي لا تتطلب شحناً.
أسئلة شائعة
كيف أضيف هذا الكود إلى متجري؟
يمكنك إضافة الكود في ملف functions.php الخاص بالقالب أو عبر إضافة مكوّن إضافي (plugin) مخصص للوظائف.
هل يؤثر الكود على سرعة الموقع؟
الكود بسيط ولا يضيف استعلامات إضافية معقدة، لذا لا يسبب تأخيراً ملحوظاً في الأداء.
ما هو الحد الأقصى للوزن الذي يمكن تغييره؟
الحد في المثال هو 3 كجم، لكن يمكنك تعديل القيمة في الكود حسب احتياجاتك.
هل يمكن تطبيق نفس المنطق لبلدان أخرى؟
نعم، يمكنك تعديل شرط البلد في الكود ليشمل أي دولة تريد تطبيق القاعدة فيها.
