WPML Multilingual & Multicurrency for WooCommerce es compatible con la API REST de WordPress. Mediante el uso de la API REST, ahora puede crear, leer, actualizar y eliminar contenido traducido de WooCommerce.
Este documento está dirigido a desarrolladores que quieran aprovechar estas características y ofrecer una experiencia multilingüe de WooCommerce en sus plugins, sitios y aplicaciones.
Requisitos
Para usar la API REST con WPML Multilingual & Multicurrency for WooCommerce necesita lo siguiente:
- WordPress 4.7+
- WooCommerce 3.9.0+
- WPML Multilingual & Multicurrency for WooCommerce 4.11.0+
- Biblioteca cliente PHP de la API REST de WooCommerce
- Enlaces permanentes configurados en la página de Ajustes → Enlaces permanentes.
Configurar la biblioteca cliente
Como se ha mencionado, necesita la biblioteca cliente PHP de la API REST de WooCommerce. Esta biblioteca es un contenedor PHP que permite interactuar con la API REST de WooCommerce de una manera más sencilla. También puede usar otras bibliotecas cliente.
Configurar la biblioteca en su aplicación conlleva unos pocos pasos:
-
- Descargue los archivos de la biblioteca al servidor de su sitio usando el siguiente comando de Composer:
composer require automattic/woocommerce
-
- Incluya el archivo de carga automática de la biblioteca, autoload.php, al principio de su código PHP usando la función require.
API REST de WCML: incluir el archivo de carga automática
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';
- Configure las opciones para usar la biblioteca. Puede encontrar la descripción de todas las opciones en la página oficial.
Uso de la API REST
Ahora que configuró la biblioteca en su código PHP, puede empezar a desarrollar diferentes acciones para que su código las ejecute. La siguiente lista incluye todas las acciones principales que puede realizar usando la API REST y WPML Multilingual & Multicurrency for WooCommerce.
Ver pedidos
Al añadir el parámetro lang a la petición, puede devolver el contenido de los pedidos en los idiomas especificados. La única condición es que los productos estén traducidos al idioma respectivo. Una aplicación de esto es ver los pedidos en el idioma predeterminado del sitio.
Ejemplo: Obtener solo los pedidos realizados en francés.
$orders = $woocommerce->get('orders', array( 'per_page' => 25, 'lang' => 'fr' ) );
Documentación relacionada de WooCommerce: Listar todos los pedidos
Ver un solo pedido
Al proporcionar un parámetro lang a la petición, si el pedido se realizó en un idioma diferente, todos los artículos, si existen, se mostrarán como traducciones en el idioma especificado.
Ejemplo: Ver el contenido del pedido #110 en inglés.
$order = $woocommerce->get('orders/110', array( 'lang' => 'en' ) );
Documentación relacionada de WooCommerce: Recuperar un pedido
Obtener productos
Al añadir el parámetro lang, puede obtener productos en un idioma especificado. Para obtener todos los productos en todos los idiomas, el parámetro lang debe estar establecido en all.
Ejemplo: Obtener solo los productos en español.
$products = $woocommerce->get('products', array( 'per_page' => 25, 'lang' => 'es' ) );
Documentación relacionada de WooCommerce: Listar todos los productos
Ver un solo producto
Los datos devueltos incluirán información sobre el idioma y la traducción. Además, si se establecen precios personalizados en monedas secundarias y el modo multimoneda está activado y configurado, esos precios también se incluirán.
Ejemplo:
$product = $woocommerce->get('products/99');
Un resultado de este ejemplo sería similar al siguiente:
Ver un solo producto
=> 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
)Documentación relacionada de WooCommerce: Recuperar un producto
Obtener términos de taxonomía de productos (categorías de productos, etiquetas, atributos, clases de envío)
Al añadir el parámetro lang, puede obtener un término de la taxonomía de productos en un idioma especificado. Para obtener todos los términos en todos los idiomas, el parámetro lang debe estar establecido en all.
Ejemplo: Obtener categorías en todos los idiomas.
$categories= $woocommerce->get('products/categories', array( 'per_page' => 10, 'lang' => 'all' ) );
Documentación relacionada de WooCommerce: Listar todas las categorías de productos
Informes de ventas
Al añadir el parámetro currency, puede obtener informes en una moneda especificada.
Informe de ventas
$query = [ 'period' => 'year', 'currency' => 'EUR' ]; $woocommerce->get( 'reports/sales', $query );
Documentación relacionada de WooCommerce: Recuperar informe de ventas
Informes de los más vendidos
Al añadir el parámetro lang, puede obtener informes en un idioma especificado.
Los más vendidos
$query = [ 'lang' => 'fr' ]; $woocommerce->get( 'reports/top_sellers', $query );
Documentación relacionada de WooCommerce: Recuperar informe de los más vendidos
Informes de totales de productos
Al añadir el parámetro lang, puede obtener informes en un idioma especificado.
Totales de productos
$query = [ 'lang' => 'fr' ]; $woocommerce->get( 'reports/products/totals', $query );
Documentación relacionada de WooCommerce: Recuperar totales de productos
Crear productos
Se admiten tres parámetros al crear un producto:
- lang – se establecerá el valor respectivo de lang para el producto. Si se omite, se usará el idioma predeterminado del sitio.
- translation_of (opcional) – el producto se creará como traducción de un producto existente, teniendo el ID proporcionado por el valor de translation_of. Si se omite translation_of, el producto se crea como parte de un nuevo grupo de traducción (trid).
- custom_prices – permite establecer precios personalizados en monedas secundarias.
Ejemplo:
Crear productos
$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 );
Para añadir un producto como traducción de otra entrada, necesita pasar el parámetro translation_of. Si la entrada que se creó con la llamada anterior tiene un ID de 23, el siguiente sería el código para añadir una traducción:
Crear un producto como traducción de otro
$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);Tenga en cuenta que si las categorías ya están traducidas, no necesita especificarlas explícitamente al añadir la traducción si la opción Copiar la taxonomía a las traducciones está configurada en WPML. Se añadirán de forma automática.
Documentación relacionada de WooCommerce: Crear un producto
Productos variables
Crear variaciones de producto con atributos locales
Se admiten tres parámetros al crear una variación de producto:
- lang – se establecerá el valor respectivo de lang para la variación de producto. Si se omite, se usará el idioma predeterminado del sitio.
- translation_of (opcional) – la variación de producto se creará como traducción de una variación de producto existente, teniendo el ID proporcionado por el valor de translation_of. Si se omite translation_of, la variación de producto se crea como parte de un nuevo grupo de traducción (trid).
- custom_prices – permite establecer precios personalizados en monedas secundarias.
Ejemplo:
Crear variación
$data = [ 'lang' => 'en',
'regular_price' => '10',
'attributes' => [ [ 'name' => $local_attribute_name, 'option' => 'red' ] ]
];
$woocommerce->post( 'products/{$variable_product_id}/variations', $data );Para añadir una variación de producto como traducción de otra entrada, necesita pasar el parámetro translation_of. Si la entrada que se creó con la llamada anterior tiene un ID de 25, el siguiente sería el código para añadir una traducción:
Traducir variación
$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);Documentación relacionada de WooCommerce: Crear una variación de producto
Crear variaciones de producto con atributos globales
Primero, necesita crear y traducir los términos globales. Luego, puede crear el producto variable siguiendo el ejemplo a continuación:
Crear producto variable
$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);Luego necesitamos crear variaciones de producto. Si el producto original tiene un ID de 25, el siguiente sería un ejemplo del código:
Crear variaciones de producto
$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 );
Ahora los productos variables se han creado en inglés. Para traducirlos, siga el ejemplo a continuación:
Crear traducción de un producto variable
$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);Documentación relacionada de WooCommerce: Actualizar variaciones de producto por lotes
Crear un pedido
Al añadir un parámetro lang se establecerá el idioma especificado para el pedido especificado.
Tenga en cuenta que los productos, si se añaden en un idioma diferente al proporcionado como argumento aquí, no se convertirán automáticamente, sino que se añadirán en su idioma.
Ejemplo:
Crear un pedido
$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 );Documentación relacionada de WooCommerce: Crear un pedido
Crear términos de taxonomía (categoría de producto, etiqueta, atributo, clase de envío)
Se admiten dos parámetros al crear un término:
- lang – se establecerá el valor respectivo de lang para el término. Si se omite, se usará el idioma predeterminado del sitio.
- translation_of (opcional) – el término se creará como traducción de un término existente, teniendo el id proporcionado por el valor de translation_of. Si se omite translation_of, el término se crea como parte de un nuevo grupo de traducción (trid)
Ejemplo: Crear una categoría en el idioma secundario.
Crear categoría
$category = [ 'name' => 'Product Category ES', 'translation_of' => $original_category_id, 'lang' => 'es' ]; $woocommerce->post( 'products/categories', $product_category );
Documentación relacionada de WooCommerce: Crear una categoría de producto
Ejemplo: Traducir un término de atributo global en el idioma secundario
Traducir término de atributo global
$attribute_term = [ 'name' => 'Black ES', 'translation_of' => $original_attribute_term_id, 'lang' => 'es' ];
$woocommerce->post( 'products/attributes/{$attribute_id}/terms', $attribute_term );Documentación relacionada de WooCommerce: Crear un término de atributo