يتوافق WPML Multilingual & Multicurrency for WooCommerce مع WordPress REST API. باستخدام REST API، يمكنك الآن إنشاء وقراءة وتحديث وحذف محتوى WooCommerce المترجم.
هذا المستند مخصص للمطورين الذين يرغبون في الاستفادة من هذه الميزات وتقديم تجربة WooCommerce متعددة اللغات في إضافاتهم ومواقعهم وتطبيقاتهم.
المتطلبات
لاستخدام REST API مع WPML Multilingual & Multicurrency for WooCommerce، تحتاج إلى ما يلي:
- WordPress 4.7+
- WooCommerce 3.9.0+
- WPML Multilingual & Multicurrency for WooCommerce 4.11.0+
- مكتبة عميل WooCommerce REST PHP
- تعيين الروابط الدائمة الجميلة في صفحة إعدادات → الروابط الدائمة.
إعداد مكتبة العميل
كما ذكرنا، تحتاج إلى مكتبة عميل WooCommerce REST PHP. هذه المكتبة عبارة عن غلاف PHP يتيح التفاعل مع WooCommerce REST API بطريقة أكثر وضوحاً. يمكنك استخدام مكتبات عملاء أخرى أيضاً.
يتضمن إعداد المكتبة داخل تطبيقك بضع خطوات:
-
- نزّل ملفات المكتبة إلى خادم موقعك باستخدام أمر Composer التالي:
composer require automattic/woocommerce
-
- قم بتضمين ملف التحميل التلقائي للمكتبة، autoload.php، في بداية كود PHP باستخدام الدالة require .
WCML REST API - تضمين ملف التحميل التلقائي
require __DIR__ . '/vendor/autoload.php'; use Automattic\WooCommerce\Client; $woocommerce = new Client( 'http://example.com', 'ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', [ 'wp_api' => true, 'version' => 'wc/v3', ] );
'ck_61f94473aab0445da506e095e664f5d65b153f45'; 'cs_7e60f84b6c87554d249b1ad797d6201566c1009e';
- كوّن الخيارات لاستخدام المكتبة. يمكنك العثور على وصف لجميع الخيارات على الصفحة الرسمية.
استخدام REST API
الآن بعد أن قمت بإعداد المكتبة في كود PHP الخاص بك، يمكنك البدء في تطوير إجراءات مختلفة لينفذها الكود. تعرض القائمة التالية جميع الإجراءات الرئيسية التي يمكنك إجراؤها باستخدام REST API وWPML Multilingual & Multicurrency for WooCommerce.
عرض الطلبات
بإضافة المعلمة lang إلى الطلب، يمكنك إرجاع محتويات الطلبات بلغات محددة. الشرط الوحيد هو أن تكون المنتجات مترجمة إلى اللغة المعنية. أحد تطبيقات ذلك هو رؤية الطلبات باللغة الافتراضية للموقع.
مثال: الحصول فقط على الطلبات المقدمة باللغة الفرنسية.
$orders = $woocommerce->get('orders', array( 'per_page' => 25, 'lang' => 'fr' ) );
وثائق WooCommerce ذات الصلة: سرد جميع الطلبات
عرض طلب واحد
من خلال توفير المعلمة lang للطلب، إذا تم تقديم الطلب بلغة مختلفة، فسيتم عرض جميع العناصر، إن وجدت، كترجمات باللغة المحددة.
مثال: رؤية محتويات الطلب رقم 110 باللغة الإنجليزية.
$order = $woocommerce->get('orders/110', array( 'lang' => 'en' ) );
وثائق WooCommerce ذات الصلة: استرداد طلب
الحصول على المنتجات
بإضافة المعلمة lang، يمكنك الحصول على المنتجات بلغة محددة. للحصول على جميع المنتجات بجميع اللغات، يجب تعيين المعلمة lang إلى all.
مثال: الحصول فقط على المنتجات الإسبانية.
$products = $woocommerce->get('products', array( 'per_page' => 25, 'lang' => 'es' ) );
وثائق WooCommerce ذات الصلة: سرد جميع المنتجات
عرض منتج واحد
ستتضمن البيانات المُرجعة معلومات اللغة والترجمة. بالإضافة إلى ذلك، إذا تم تعيين أسعار مخصصة بعملات ثانوية وكان وضع تعدد العملات ممكّناً ومُكوّناً، فسيتم تضمين تلك الأسعار أيضاً.
مثال:
$product = $woocommerce->get('products/99');
ستكون نتيجة هذا المثال مشابهة لما يلي:
عرض منتج واحد
=> stdClass Object
(
[title] => An English product
[id] => 28
[created_at] => 2015-06-08T08:56:49Z
[updated_at] => 2015-06-08T08:56:49Z
[type] => simple
[status] => publish
[downloadable] =>
[virtual] =>
[permalink] => http://example.com/shop/a-simple-english-product
[sku] =>
[price] => 100.00
[regular_price] => 100.00
[sale_price] =>
[price_html] => $100.00
…
[variations] => Array
(
)
[parent] => Array
(
)
[translations] => stdClass Object
(
[bg] => 31
[es] => 30
)
[lang] => en
)وثائق WooCommerce ذات الصلة: استرداد منتج
الحصول على مصطلحات تصنيف المنتج (فئات المنتجات، الوسوم، السمات، فئات الشحن)
بإضافة المعلمة lang، يمكنك الحصول على مصطلح تصنيف المنتج بلغة محددة. للحصول على جميع المصطلحات بجميع اللغات، يجب تعيين المعلمة lang إلى all.
مثال: الحصول على الفئات بجميع اللغات.
$categories= $woocommerce->get('products/categories', array( 'per_page' => 10, 'lang' => 'all' ) );
وثائق WooCommerce ذات الصلة: سرد جميع فئات المنتجات
تقارير المبيعات
بإضافة المعلمة currency، يمكنك الحصول على التقارير بعملة محددة.
تقرير المبيعات
$query = [ 'period' => 'year', 'currency' => 'EUR' ]; $woocommerce->get( 'reports/sales', $query );
وثائق WooCommerce ذات الصلة: استرداد تقرير المبيعات
تقارير المنتجات الأكثر مبيعاً
بإضافة المعلمة lang، يمكنك الحصول على التقارير بلغة محددة.
المنتجات الأكثر مبيعاً
$query = [ 'lang' => 'fr' ]; $woocommerce->get( 'reports/top_sellers', $query );
وثائق WooCommerce ذات الصلة: استرداد تقرير المنتجات الأكثر مبيعاً
تقارير إجماليات المنتجات
بإضافة المعلمة lang، يمكنك الحصول على التقارير بلغة محددة.
إجماليات المنتجات
$query = [ 'lang' => 'fr' ]; $woocommerce->get( 'reports/products/totals', $query );
وثائق WooCommerce ذات الصلة: استرداد إجماليات المنتجات
إنشاء المنتجات
يتم دعم ثلاث معلمات عند إنشاء منتج:
- lang – سيتم تعيين قيمة lang المعنية للمنتج. إذا تم حذفها، فسيتم استخدام اللغة الافتراضية للموقع.
- translation_of (اختياري) – سيتم إنشاء المنتج كترجمة لمنتج موجود، ويحمل المعرف المقدم بواسطة قيمة translation_of. إذا تم حذف translation_of، فسيتم إنشاء المنتج كجزء من مجموعة ترجمة جديدة (trid).
- custom_prices – يتيح تعيين أسعار مخصصة بالعملات الثانوية.
مثال:
إنشاء المنتجات
$data = [ 'name' => 'English Test Post', 'type' => 'simple', 'regular_price' => '10.00', 'description' => 'This is a Simple English Test Post', 'short_description' => 'This is a Simple English Test Post', 'categories' => [ [ 'id' => 10 ], [ 'id' => 12 ] ], 'images' => [ [ 'src' => 'https://example.com/image-1.png', 'position' => 0 ], [ 'src' => 'https://example.com/image-2.png', 'position' => 1 ] ], 'lang' => 'en', 'custom_prices' => [ 'EUR' => [ 'regular_price' => 1999, 'sale_price' => 1500 ], 'USD' => [ 'regular_price' => 2100, 'sale_price' => 2099 ] ] ]; $product = $woocommerce->post( 'products', $data );
لإضافة منتج كترجمة لمقالة أخرى، تحتاج إلى تمرير المعلمة translation_of. إذا كانت المقالة التي تم إنشاؤها بالاستدعاء السابق تحمل المعرف 23، فسيكون الكود التالي مخصصاً لإضافة ترجمة:
إنشاء منتج كترجمة لمنتج آخر
$data = [
'name' => 'French Test Post',
'type' => 'simple',
'regular_price' => '10.00',
'description' => 'This is a Simple French Test Post',
'short_description' => 'This is a Simple French Test Post',
'lang' => 'fr',
'translation_of' => '23'
];
$product = $woocommerce->post('products', $data);لاحظ أنه إذا كانت الفئات مترجمة بالفعل، فلن تحتاج إلى تحديدها صراحةً عند إضافة الترجمة إذا تم تعيين خيار نسخ التصنيف إلى الترجمات في WPML. ستتم إضافتها تلقائياً.
وثائق WooCommerce ذات الصلة: إنشاء منتج
المنتجات متعددة الأنواع
إنشاء أشكال المنتج بسمة محلية
يتم دعم ثلاث معلمات عند إنشاء شكل للمنتج:
- lang – سيتم تعيين قيمة lang المعنية لشكل المنتج. إذا تم حذفها، فسيتم استخدام اللغة الافتراضية للموقع.
- translation_of (اختياري) – سيتم إنشاء شكل المنتج كترجمة لشكل منتج موجود، ويحمل المعرف المقدم بواسطة قيمة translation_of. إذا تم حذف translation_of، فسيتم إنشاء شكل المنتج كجزء من مجموعة ترجمة جديدة (trid).
- custom_prices – يتيح تعيين أسعار مخصصة بالعملات الثانوية.
مثال:
إنشاء شكل
$data = [ 'lang' => 'en',
'regular_price' => '10',
'attributes' => [ [ 'name' => $local_attribute_name, 'option' => 'red' ] ]
];
$woocommerce->post( 'products/{$variable_product_id}/variations', $data );لإضافة شكل منتج كترجمة لمقالة أخرى، تحتاج إلى تمرير المعلمة translation_of. إذا كانت المقالة التي تم إنشاؤها بالاستدعاء السابق تحمل المعرف 25، فسيكون الكود التالي مخصصاً لإضافة ترجمة:
ترجمة الشكل
$data = [
'name' => 'Translation of Variable Product',
'type' => 'variable',
'description' => 'Translate of Product Description',
'lang' => 'fr',
'translation_of' => 25,
'attributes' => [
[
'name' => $local_attribute_name,
'visible' => true,
'variation' => true,
'options' => [
'$translation_of_red'
]
]
]
];
$woocommerce->post('products', $data);وثائق WooCommerce ذات الصلة: إنشاء شكل لمنتج
إنشاء أشكال المنتج بسمة عامة
أولاً، تحتاج إلى إنشاء وترجمة المصطلحات العامة. بعد ذلك، يمكنك إنشاء المنتج متعدد الأنواع باتباع المثال أدناه:
إنشاء منتج متعدد الأنواع
$data = [
'name' => 'Test Variable Product',
'type' => 'variable',
'description' => 'Test Variable Product for REST',
'lang' => 'en',
'translation_of' => null,
'attributes' => [
[
'id' => $global_attribute_id,
'visible' => true,
'variation' => true,
'options' => [
'Red'
]
]
]
];
$woocommerce->post('products', $data);ثم نحتاج إلى إنشاء أشكال للمنتج. إذا كان المنتج الأصلي يحمل المعرف 25، فسيكون ما يلي مثالاً على الكود:
إنشاء أشكال للمنتج
$data = [ 'create' => [ [ 'lang' => 'en', 'translation_of' => null, 'regular_price' => '10', 'attributes' => [ [ 'id' => $global_attribute_id, 'option' => 'blue-en' //we need to add here the attribute term slug ] ] ] $woocommerce->post( 'products/25/variations/batch', $data );
الآن تم إنشاء المنتجات متعددة الأنواع باللغة الإنجليزية. لترجمتها، اتبع المثال أدناه:
إنشاء ترجمة لمنتج متعدد الأنواع
$data = [
'name' => 'FR Test Variable Product',
'type' => 'variable',
'description' => 'FR Test Variable Product for REST',
'lang' => 'fr',
'translation_of' => 25,
'attributes' => [
[
'id' => $global_attribute_id,
'visible' => true,
'variation' => true,
'options' => [
'red-fr' //slug of the attribute term translation
]
]
]
];
$woocommerce->post('products', $data);وثائق WooCommerce ذات الصلة: تحديث مجمّع لأشكال المنتج
إنشاء طلب
ستؤدي إضافة المعلمة lang إلى تعيين اللغة المحددة للطلب المحدد.
يُرجى ملاحظة أن المنتجات، إذا تمت إضافتها بلغة مختلفة عن تلك المقدمة كوسيطة هنا، لن يتم تحويلها تلقائياً بل ستتم إضافتها بلغتها.
مثال:
إنشاء طلب
$data = [
'payment_details' => [
'method_id' => 'bacs',
'method_title' => 'Direct Bank Transfer',
'paid' => true
],
'billing_address' => [
'first_name' => 'John',
'last_name' => 'Doe',
'address_1' => '969 Market',
'address_2' => '',
'city' => 'San Francisco',
'state' => 'CA',
'postcode' => '94103',
'country' => 'US',
'email' => 'john.doe@example.com',
'phone' => '(555) 555-5555'
],
'shipping_address' => [
'first_name' => 'John',
'last_name' => 'Doe',
'address_1' => '969 Market',
'address_2' => '',
'city' => 'San Francisco',
'state' => 'CA',
'postcode' => '94103',
'country' => 'US'
],
'customer_id' => 2,
'line_items' => [
[
'product_id' => 58,
'quantity' => 2
],
],
'shipping_lines' => [
[
'method_id' => 'flat_rate',
'method_title' => 'Flat Rate',
'total' => 10
]
],
'lang' => 'el'
'currency' => 'usd'
];
$order = $woocommerce->post('orders', $data );وثائق WooCommerce ذات الصلة: إنشاء طلب
إنشاء مصطلحات التصنيف (فئة المنتج، الوسم، السمة، فئة الشحن)
يتم دعم معلمتين عند إنشاء مصطلح:
- lang – سيتم تعيين قيمة lang المعنية للمصطلح. إذا تم حذفها، فسيتم استخدام اللغة الافتراضية للموقع.
- translation_of (اختياري) – سيتم إنشاء المصطلح كترجمة لمصطلح موجود، ويحمل المعرف المقدم بواسطة قيمة translation_of. إذا تم حذف translation_of، فسيتم إنشاء المصطلح كجزء من مجموعة ترجمة جديدة (trid)
مثال: إنشاء فئة باللغة الثانية.
إنشاء فئة
$category = [ 'name' => 'Product Category ES', 'translation_of' => $original_category_id, 'lang' => 'es' ]; $woocommerce->post( 'products/categories', $product_category );
وثائق WooCommerce ذات الصلة: إنشاء فئة منتج
مثال: ترجمة مصطلح سمة عامة باللغة الثانوية
ترجمة مصطلح السمة العامة
$attribute_term = [ 'name' => 'Black ES', 'translation_of' => $original_attribute_term_id, 'lang' => 'es' ];
$woocommerce->post( 'products/attributes/{$attribute_id}/terms', $attribute_term );وثائق WooCommerce ذات الصلة: إنشاء مصطلح سمة