WPML

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:

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:

    1. Descargue los archivos de la biblioteca al servidor de su sitio usando el siguiente comando de Composer:
composer require automattic/woocommerce
    1. 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',

   ]

);
  • Genere los valores de Clave de cliente y Secreto de cliente. Para ello, vaya a WooCommerceAjustes y haga clic en la pestaña API. Allí, haga clic en la subpestaña Claves/Aplicaciones y haga clic en Añadir clave. En el formulario que aparece, introduzca la Descripción, el Usuario y los Permisos que quiera conceder al usuario, y haga clic en Generar clave de API.
  • Añada los valores generados de Clave de cliente y Secreto de cliente a su código PHP.
  •  'ck_61f94473aab0445da506e095e664f5d65b153f45'; 'cs_7e60f84b6c87554d249b1ad797d6201566c1009e'; 
    1. 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)

    Tenga en cuenta que puede usar la API REST para traducir los términos de los atributos (p. ej., Azul), pero no los nombres de los atributos (p. ej., Color). Para traducir los nombres de los atributos, vaya a WPML → Traducción de taxonomía, elija el atributo en el menú desplegable y añada las traducciones en la sección Traducciones de las etiquetas de la taxonomía y del slug.

    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

    Escrito por Amir · Última actualización 1 de julio de 2026