السيطرة الكاملة على استيراد المنتجات في WooCommerce: دليل شامل من أجل تحويل ملف CSV إلى منتجات مخصصة.

قراءة 3 دقائق
2026-03-13
2026-06-03
2,632
أنا أحصل على عمولة عند التسوق عبر الروابط أدناه، ولا يُضاف أي تكلفة عليك.

لماذا نحتاج إلى أداة محترفة لاستيراد منتجات WooCommerce؟

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

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

تحضير ملف CSV قياسي للتصدير الجماعي

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

القراءة الموصى بها تطوير موقع التجارة الإلكترونية في WooCommerce: بناء متجرك عبر الإنترنت من الصفر.

فهم أعمدة بيانات المنتج الأساسية

يجب أن يحتوي ملف CSV الأساسي المستورد على بعض الأعمدة الرئيسية. من بينها،IDوTypeالأعمدة هي الأكثر أهمية.IDيُستخدم لمطابقة المنتجات الحالية من أجل تنفيذ عمليات التحديث؛ إذا تم تركه فارغًا، سيتم إنشاء منتج جديد.Typeهذا يعرّف أنواع المنتجات، مثل…simple(منتجات بسيطة),variable(منتجات قابلة للتغيير)grouped(منتجات مجمعة) وما إلى ذلك. تشمل الأعمدة الأساسية الأخرى:SKUوحدة المخزون (Inventory Unit).Name(اسم المنتج)Published(حالة النشر: 1 تعني تم النشر)Description(وصف)Regular price(السعر العادي) وكذلكStock(عدد الوحدات المتوفرة في المخزون).

خادم ووردبريس من شركة UltaHost
ضمان استرداد المال خلال 30 يومًا، عرض نطاق ترددي وقواعد بيانات غير محدودين، حماية مجانية ضد هجمات DDoS، خصم 50% عند الشراء لمدة 3 سنوات (السعة المتاحة: 501–4 تيرابايت).

بالنسبة للمنتجات المتغيرة، يتم تقسيم عملية الاستيراد إلى خطوتين: أولاً، يتم استيراد المنتج الأصلي، ثم يتم استيراد متغيراته الفرعية.Typeمُصنَّف كـvariableالمتغيرات الفرعيةTypeمُصنَّف كـvariationومن خلال…Parentتحدد العمود رقم المنتج الأب (SKU) لإنشاء الارتباط بين المنتجات.

معالجة التصنيفات والتسميات والصور

يجب أن يتم استيراد التصنيفات والتسميات وفقًا لتنسيق معين. بالنسبة لتصنيفات المنتجات، يمكن…Categoriesفي الأعمدة، يتم استخدام تنسيق “التصنيف الرئيسي > التصنيف الفرعي”, ويتم فصل التصنيفات المتعددة بفواصل (؛). على سبيل المثال: “الملابس > القمصان؛ المنتجات الجديدة للصيف”. أما العلامات التوضيحيةTagsيتم فصل البيانات داخل العمود بفواصل منقوطة إنجليزية.

إن عملية استيراد صور المنتجات مرنة نسبيًا، ويمكن القيام بذلك من خلال…Imagesقم بتحديد عناوين URL للصور في العمود المناسب؛ يتم فصل عدة عناوين URL بفواصل (,)، وسيتم استخدام أول عنوان URL كصورة رئيسية. عند استيراد البيانات باستخدام WooCommerce، سيحاول النظام تنزيل هذه الصور وحفظها في مكتبة الوسائط. هناك طريقة أخرى وهي رفع الصور مسبقًا إلى مجلد معين على الخادم عبر بروتوكول FTP، ثم الاستشهاد بالمسارات النسبية في ملف CSV.

مثال على ملف CSV لمنتج قياسي وبسيط هو كالتالي:

القراءة الموصى بها دليل WooCommerce: دليل كامل لبناء موقع تجارة إلكترونية محترف من الصفر.

ID,Type,SKU,Name,Published,Description,Regular price,Stock,Categories,Images
,simple,T-SHIRT-SM,纯棉简约T恤,1,这是一件舒适的纯棉T恤。,29.99,100,服饰 > 上衣,https://example.com/tshirt.jpg

استخدام WP CLI لتحقيق أتمتة عمليات الاستيراد المتقدمة

للمطورين والمستخدمين المتقدمين، أدوات سطر الأوامر في ووردبريس (WordPress Command Line Tools)WP-CLIتم توفير طريقة استيراد أقوى وقابلة للبرمجة. هي مناسبة بشكل خاص للتكامل مع عمليات النشر أو معالجة مجموعات البيانات ذات الحجم الهائل.

مرور أساسي.wp-cliالأمر لاستيراد ملف CSV هو كالتالي:

wp import products.csv --authors=skip

لكن الطريقة الأكثر شيوعًا هي استخدام السكريبتات المخصصة. يمكننا كتابة سكريبت PHP، واستغلاله لتحقيق ما نريد.WP-CLIأنا أحبك، أيها الأخ الأكبر.wp eval-fileالأمر المستخدم لتنفيذ العملية. جوهر السكريبت يكمن في استخدام هذا الأمر.wc_get_product_objectتقوم الدالة بإنشاء كائن منتج وتعيين الخصائص له.

استضافة.كوم استضافة مشتركة
أداء عالٍ مع وحدات المعالجة المركزية AMD EPYC، ووحدات تخزين NVMe SSD وLiteSpeed، ودعم داخلي متخصص على مدار الساعة طوال أيام الأسبوع، وتدابير أمنية متقدمة بما في ذلك SSL، وقوة الغاشمة، والحماية من البرامج الضارة والحماية من DDoS، وتوفير ما يصل إلى 731 تيرابايت 4 تيرابايت

فيما يلي مثال على سكريبت PHP يستخدم طرق البرمجة لإنشاء منتج بسيط:

<?php
// 读取CSV数据
$csvFile = 'products.csv';
if (($handle = fopen($csvFile, 'r')) !== FALSE) {
    $header = fgetcsv($handle); // 读取标题行
    while (($data = fgetcsv($handle)) !== FALSE) {
        $productData = array_combine($header, $data);

// 创建产品对象
        $product = new WC_Product_Simple();
        $product->set_name($productData['Name']);
        $product->set_sku($productData['SKU']);
        $product->set_regular_price($productData['Regular price']);
        $product->set_description($productData['Description']);
        $product->set_stock_quantity($productData['Stock']);
        $product->set_status($productData['Published'] == 1 ? 'publish' : 'draft');

// 处理分类
        $categoryNames = explode(';', $productData['Categories']);
        $categoryIds = [];
        foreach ($categoryNames as $catName) {
            $term = term_exists(trim($catName), 'product_cat');
            if (!$term) {
                $term = wp_insert_term(trim($catName), 'product_cat');
            }
            if (!is_wp_error($term)) {
                $categoryIds[] = (int)$term['term_id'];
            }
        }
        $product->set_category_ids($categoryIds);

$product->save();
        echo "产品已创建/更新: " . $productData['Name'] . " (ID: " . $product->get_id() . ")n";
    }
    fclose($handle);
}
?>

قم بحفظ السكريبت المذكور أعلاه كملف بصيغة مناسبة (مثل .txt أو .js).import_products.phpبعد ذلك، يمكن استخدام الأوامر للقيام بما يلزم.wp eval-file import_products.phpنفّذ.

استخدام WP CLI للتعامل مع الروابط المعقدة

WP-CLIتكمن قوة هذا النظام في قدرته على معالجة المنطق المعقد. على سبيل المثال، عند استيراد المنتجات المتغيرة وخصائصها، يمكن أولاً إنشاء خصائص عامة، ثم تعيين هذه الخصائص للمنتجات وإنشاء متغيرات منها. من خلال كتابة السكريبتات، يمكن التحكم بدقة في معالجة الأخطاء وتسجيل السجلات لكل خطوة، مما يؤدي إلى تنفيذ عملية الاستيراد بشكل تلقائي بالكامل. بالنسبة للسيناريوهات التي تتطلب مزامنة البيانات مع واجهات برمجة التطبيقاتWP-CLIاستخدام المهام المخططة مسبقًا (Cron Jobs) هو الحل المثالي.

معالجة المنتجات المخصصة والبيانات الوصفية (Metadata) عبر البرمجة

عندما لا تتمكن الأعمدة القياسية في ملفات CSV من تلبية الاحتياجات، مثل الحاجة إلى استيراد حقول مخصصة، أو أنواع المنتجات التي تم إنشاؤها باستخدام إضافات خارجية (مثل المنتجات المحجوزة)، أو بيانات وصفية معقدة، فإنه يصبح من الضروري

إنشاء وتحديث المنتجات التي تحتوي على حقول مخصصة

جميع البيانات القياسية لمنتجات WooCommerce (مثل الأسعار والمخزون) بالإضافة إلى البيانات المخصصة (التي تم إضافتها عبر ACF أو طرق أخرى) تُخزن في النهاية كبيانات وصفية (Metadata، أي Post Meta). جوهر عملية الاستيراد عبر البرمجة يكمن في استخدام هذه البيانات بشكل صحيح.set_الطرق المتسلسلة و…update_post_metaدالة.

لنفترض أن لدينا شيئًا يُسمى…custom_batch_numberالحقل المخصص (Custom Field)، يوضح الكود التالي كيفية تعيينه عند إنشاء منتج:

الاستضافة المشتركة InterServer
استضافة مشتركة $2.50 دولار أمريكي في الشهر، الشهر الأول $0.1 دولار أمريكي الرمز الترويجي tryinterserver، 461 نص برمجي للتطبيقات السحابية، تثبيت بنقرة واحدة.
// 假设 $product 是一个 WC_Product 对象
$product->set_name('高级定制产品');
$product->set_regular_price(99.99);
$product->save(); // 必须先保存产品以获得ID

// 更新自定义字段(产品元数据)
$product_id = $product->get_id();
update_post_meta($product_id, 'custom_batch_number', 'BATCH-2026-001');
update_post_meta($product_id, '_custom_field', 'value'); // 下划线开头表示隐藏的元数据

من المهم ملاحظة أن بعض الإضافات الخارجية (البرامج الإضافية من جهات ثالثة) قد تحدد أنواع منتجاتها الخاصة. عند إنشاء منتجات من هذا النوع، يجب استخدام الفئات (الكلاسات) المناسبة.new WC_Product_Booking()ويتم أيضًا استدعاء الطريقة المحددة التي يوفرها الإضافة (البرنامج الإضافي).

استخدام خيوط (hooks) في WooCommerce لتوسيع وظائف الاستيراد

لإدخال منطق مخصص أثناء عملية الاستيراد، يوفر WooCommerce عددًا كبيرًا من الخيوط (Hooks). اثنان من الخيوط الرئيسية للعمليات هما:woocommerce_new_productوwoocommerce_update_productيتم تشغيل كل منهما بعد إنشاء المنتج وتحديثه على التوالي.

على سبيل المثال، بعد استيراد المنتجات، يمكننا تعيين حالة مراجعة داخلية لها تلقائيًا:

add_action('woocommerce_new_product', 'my_post_import_actions', 10, 2);
add_action('woocommerce_update_product', 'my_post_import_actions', 10, 2);

function my_post_import_actions($product_id, $product) {
    // 自动为所有新导入的产品添加“待审核”标记
    update_post_meta($product_id, '_internal_review_status', 'pending');

// 或者根据特定条件进行处理
    if (strpos($product->get_sku(), 'PREMIUM') !== false) {
        wp_set_object_terms($product_id, 'premium', 'product_tag', true);
    }
}

بالإضافة إلى ذلك، مخالب المرشحات (filter hooks)…woocommerce_product_import_pre_insert_product_objectوهو أيضًا مفيد للغاية، حيث يسمح لنا بتعديل بيانات كائنات المنتجات قبل إدخالها إلى قاعدة البيانات، وهو مناسب لتنسيق الأسعار بشكل موحد، أو تحويل وحدات القياس، أو التحقق من مطابقة البيانات

الملخصات

استيراد منتجات WooCommerce يمثل مهارة تتراوح من البساطة إلى التعقيد، ولها عدة مستويات من الخبرة. إتقان طريقة الاستيراد عبر ملفات CSV القياسية هو الأساس، وهي مناسبة لمعظم سيناريوهات التحديث الجماعي والنقل. وعند مواجهة مهام متكررة أو الحاجة إلى دمج العملية مع سير عمل التطوير، فإن…WP-CLIأظهرت أتمتة سطر الأوامر قوتها الكبيرة في هذا السياق. أما بالنسبة للمتاجر المخصصة بشكل عالٍ، والتي تتضمن حقولًا مخصصة، بيانات من إضافات خارجية، أو منطق أعمال معقد، فإن البرمجة مع استخدام خيوط توصيل (hooks) في WooCommerce توفر مرونة وسيطرة لا مثيل لهما. غالبًا ما تعتمد استراتيجيات الاستيراد الناجحة على مزيج من هذه الأدوات: استخدام ملفات CSV لمعالجة المهام الجماعية اليومية، والاستعانة بالسكريبتات لمواجهة الاحتياجات المعقدة والمخصصة. المفتاح هو فهم هيكل بيانات WooCommerce بعمق، والقيام دائمًا بعمل نسخة احتياطية كاملة من البيانات الحالية قبل إجراء أي تعديلات.

الأسئلة الشائعة الأسئلة المتداولة

كيفية التعامل مع الأحرف الخاصة ومشاكل الترميز في ملفات CSV

تأكد من أن ملف CSV محفوظ بترميز UTF-8، وهو الترميز الوحيد الذي يدعمه بشكل كامل مستورد WooCommerce الرسمي. إذا كانت البيانات تحتوي على أحرف خاصة مثل الفواصل (,)، أو الاقتباسات ("), أو علامات الخطوط الجديدة (newline)، فيجب تغليف قيم كل حقل بأقواس مزدوجة من النوع الإنجليزي.

على سبيل المثال، عندما يحتوي الوصف على فواصل، يجب كتابتها كما هي.“这是一件优质,舒适的产品”يُنصح بفحص جميع الحقول في محرر النصوص والتأكد من أن علامات الاقتباس موجودة بشكل متطابق (أي أن كل علامة اقتباس مصحوبة بعلامة اقتباس أخرى)، وهذه خطوة أساسية لتجنب أخطاء أثناء عملية ال

ماذا أفعل إذا لم تظهر خصائص المنتجات المتغيرة عند استيرادها، أو فشل إنشاء النسخ المتنوعة من المنتج؟

عادةً ما يكون السبب في هذه المشكلة هو تنسيق الملف بصيغة CSV أو مشكلة في ترتيب عملية الاستيراد. أولاً، تأكد من أنك قد قمت بضبط الخصائص العامة بشكل صحيح. عند استيراد المنتج الرئيسي (…)Type: variableعند القيام بذلك، من الضروري…Attribute 1 nameوAttribute 1 value(s)تعريف الخصائص في الأعمدة المتساوية، على سبيل المثال…颜色و红色,蓝色

ثانيًا، استيراد الاختلافات (Importing Variants)Type: variationعند القيام بذلك، يجب أن يتم ذلك من خلال…Parentيجب أن تشير الأعمدة بدقة إلى رقم المنتج (SKU) الخاص بالمنتج الأصلي (الوالد)، وذلك في…Attribute: 颜色في مثل هذه الأعمدة، يتم تحديد قيم الخصائص المحددة لهذا النوع (مثل…)红色أخيرًا، بعد إتمام عملية الاستيراد، يجب الدخول إلى تبويب “المتغيرات” (Variants) الخاص بالمنتج، ثم النقر على “إنشاء متغير” (Create Variant) أو “حفظ التغييرات” (Save Changes). سيقوم النظام بعد ذلك بإنشاء جميع التركيبات الممكنة ل

كيف يمكن ضبط صور المنتجات بشكل صحيح من خلال البرمجة؟

تعد عملية تحديد صور المنتجات في إعدادات البرمجة أكثر تعقيدًا مقارنة بتحديد عناوين URL في ملف CSV. الخطوات الأساسية هي كالتالي: أولاً، يجب تحميل ملفات الصور إلى مكتبة الوسائط في ووردبريس، ثم الحصول على معرف الملف المرفق (attachment ID) الخاص بها، وبعد

يمكن استخدامه.media_sideload_imageالدالة تقوم بتنزيل الصورة من عنوان URL وإنشاء مرفق منها. الكود المثالي كالتالي:

$image_url = 'https://example.com/product.jpg';
$attach_id = media_sideload_image($image_url, $product_id, '产品图片描述', 'id');
if (!is_wp_error($attach_id)) {
    // 设置为主图
    set_post_thumbnail($product_id, $attach_id);
    // 如需加入产品图库
    // $gallery_ids = array($attach_id);
    // update_post_meta($product_id, '_product_image_gallery', implode(',', $gallery_ids));
}

كيفية التعامل مع توقف الموقع عن العمل أو استنفاد الذاكرة عند استيراد عدد كبير من المنتجات؟

هذا ناتج عن قيود زمن تنفيذ الخادم وقيود الذاكرة. بالنسبة لعمليات الاستيراد الضخمة، يجب ألا تتم من خلال واجهة ووردبريس الخلفية، بل يجب استخدام طرق أخرى.WP-CLIأداة سطر الأوامر، لأنها لا تتأثر بإعدادات وقت التوقف (timeout settings) الخاصة بلغة PHP.

على مستوى السكريبت، يمكن اتباع استراتيجية المعالجة التدريجية. على سبيل المثال، يتم قراءة ومعالجة 100 سجل من ملف CSV في كل مرة، وبعد الانتهاء من المعالجة، يتم…sleep(1)قم بتوقف قصير، ثم قم بالتنسيق المناسب.wp_cache_flush()قم بتنظيف الذاكرة المؤقتة (الكاش) لتحرير المزيد من المساحة في الذاكرة. بالإضافة إلى ذلك، قبل تشغيل سكريبت الاستيراد، يمكنك…wp-config.phpتم إضافة قيود مؤقتة على حجم الذاكرة:define('WP_MEMORY_LIMIT', '512M');بالنسبة لعمليات استيراد المنتجات التي تتراوح أعدادها بين عشرات الآلاف ومئات الآلاف، يُنصح بالتعامل مباشرة مع قاعدة البيانات أو اللجوء إلى أدوات متخصصة في نقل البيانات.