ووردبريس

تحديث قيمة حقل مخصص في ووكوميرس دون حفظ يدوي

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

فهم المشكلة

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

استراتيجية الحل

لتحقيق تحديث قيمة الحقل المخصص دون الحاجة إلى عملية الحفظ اليدوي، يُمكن استخدام بعض الدوال المتاحة في WooCommerce. سنبدأ أولاً بإنشاء الحقول المخصصة للمنتجات وذلك من خلال إضافة المتغيرات اللازمة إلى ملف functions.php.

// بناء حقول المنتج المخصصة
function blu_real_stock_status_fields() {
    $domain = 'woocommerce';
    echo '';
    woocommerce_wp_text_input( array(
        'id'                 => '_realer_bestand',
        'label'              => __( 'Realer Bestand', $domain ),
        'placeholder'        => '',
        'description'        => __( 'Die Anzahl aller Produkte, die noch im Lager liegen.', $domain ),
        'desc_tip'           => true,
        'custom_attributes'  => array( 'readonly' => 'readonly' ),
    ));
    woocommerce_wp_text_input( array(
        'id'                 => '_in_bearbeitung',
        'label'              => __( 'In Bearbeitung', $domain ),
        'placeholder'        => '',
        'description'        => __( 'Anzahl der noch nicht versandten Bestellungen.', $domain ),
        'desc_tip'           => true,
        'custom_attributes'  => array( 'readonly' => 'readonly' ),
    ));   
    echo '';
}
add_action( 'woocommerce_product_options_stock_status','blu_real_stock_status_fields', 0, 1 );

الحصول على عدد الطلبات

نحتاج إلى تحديد عدد الطلبات التي تم وضعها للمنتج المعني. لنقم بإنشاء دالة يمكن أن تُحصي عدد الطلبات بحسب حالتها، مثل "قيد المعالجة" و"معلق".

function get_orders_count_for_a_product( $product_id ){
    $orders = wc_get_orders( array(
        'numberposts' => -1,
        'post_type' => 'shop_order',
        'post_status' => array('wc-processing','wc-on-hold')
    ) );
    $count_orders = 0;
    foreach($orders as $order){
        $has_product = false;
        foreach($order->get_items() as $item_values)
            if( $item_values['product_id'] == $product_id )
                $has_product = true;
        if( $has_product )
            $count_orders++;
    }
    return $count_orders;
}

تحديث القيمة تلقائيًا

التحدي الأخير هو تحديث القيم الخاصة بالحقول المخصصة دون الحاجة إلى حفظ يدوي. يمكن القيام بذلك من خلال الاستجابة لحدث محدد في منطقة إدارة المنتجات.

function blu_real_stock_status( $product_id ) {
    $product = wc_get_product( $product_id );
    $number_of_orders = get_orders_count_for_a_product($product_id);
    $processing_val = $number_of_orders;
    if ( isset( $_POST['_realer_bestand'] ) ) {
        $ref_stock_id = '_realer_bestand';
        $ref_stock_val =  $product->get_stock_quantity();
        $ref_stock_val_real = $ref_stock_val + $processing_val;
        $product->update_meta_data( $ref_stock_id, $ref_stock_val_real );
    }
    if ( isset( $_POST['_in_bearbeitung'] ) ) {
        $ref_process_id = '_in_bearbeitung';
        $ref_process_val =  $processing_val;
        $product->update_meta_data( $ref_process_id, $ref_process_val );
        $product->save_meta_data();
    }
}
add_action( 'woocommerce_admin_process_product_object','blu_real_stock_status', 0, 1 );

نقاط مهمة للمراقبة

يجب على المستخدمين الانتباه إلى أن أي تغييرات تتم على البيانات يجب أن تكون دقيقة وأن يتم التعامل مع الحقول المخصصة بشكل مدروس. يجب عند تطبيق أي كود جديد التأكد من أن جميع البيانات صحيحة وأن النظام يعمل بسلاسة.

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

احمد علي

متخصص في مجال تطوير وإدارة المواقع الإلكترونية، يتمتع بخبرة واسعة في التعامل مع منصات إدارة المحتوى، خاصة ووردبريس. يقدم أحمد حلولاً مبتكرة واستراتيجيات فعالة لتحسين أداء المواقع وتطوير تصميماتها بما يتناسب مع احتياجات المستخدمين. كما يتميز بقدرته على تبسيط المفاهيم التقنية وكتابة محتوى تعليمي يساعد الأفراد والشركات على تحسين تواجدهم الرقمي وتحقيق أهدافهم على الإنترنت.
زر الذهاب إلى الأعلى
Don`t copy text!