Sou novo ao PHP, então se estiver no lugar errado, me perdoem rs.
Eu preciso puxar os preços da API de um serviço externo ($url) em JSON e atualizar os produtos cadastrados no Woocommerce. O script abaixo até funciona, mas é um pesadelo pra manter porque eu preciso listar cada produto e cada variação de produto. Seria possível iterar sobre todos os produtos e variações cadastradas com base em uma variável comum (tipo a SKU do produto)?
<?php
require __DIR__ . '/vendor/autoload.php';
use Automattic\WooCommerce\Client;
use Automattic\WooCommerce\HttpClient\HttpClientException;
$woocommerce = new Client(
'http://exemplo.com',
'ck_xxxxxxxxxxx',
'cs_xxxxxxxxxxx',
[
'wp_api' => true,
'version' => 'wc/v2',
// 'query_string_auth' => true
]
);
function parse_json( $file ) {
$json = json_decode( file_get_contents( $file ), true );
if ( is_array( $json ) && !empty( $json ) ) :
return $json;
else :
die( 'An error occurred while parsing ' . $file . ' file.' );
endif;
}
$url = 'https://username:password@apiservice.com/apis/v1.0/c1212kj1n1n1b112';
$json = parse_json($url);
//Atualiza o preço de produtos simples. Produto #586:
$data = [
'update' => [
[
'id' => 586,
'regular_price' => $json['name' == 'Product 1']['regular_price']
]
]
];
print_r($woocommerce->post('products/batch', $data));
// Atualiza variações de produtos. Produto #588:
$data = [
'update' => [
[
'id' => 589,
'regular_price' => $json['product_variation[0]']['regular_price']
],
[
'id' => 590,
'regular_price' => $json['product_variation[1]']['regular_price']
],
[
'id' => 591,
'regular_price' => $json['product_variation[2]']['regular_price']
],
]
];
print_r($woocommerce->post('products/588/variations/batch', $data));
?>
Esse aqui é o formato dos dados da API que eu uso pra pegar os preços:
[
{
"product_id": "100",
"type": "simple",
"parent_product_id": "",
"name": "Product 1",
"description": "Descrição",
"regular_price": "26.78",
"manage_stock": "1",
"stock": "5",
"weight": "0",
"attribute_name": "",
"attribute_value": "",
"has_variations": "",
"image": "site.com/imagem1.png",
"sku": "10010"
},
{
"product_id": "200",
"type": "variable",
"parent_product_id": "",
"name": "Product 2",
"description": "Descrição",
"regular_price": "0",
"manage_stock": "0",
"stock": "0",
"weight": "0",
"attribute_name": "Cor",
"attribute_value": "",
"has_variations": "1",
"image": "site.com/imagem2.png",
"sku": "11010"
},
{
"product_id": "",
"type": "product_variation",
"parent_product_id": "200",
"name": "",
"description": "A short description",
"regular_price": "3.70",
"manage_stock": "1",
"stock": "100",
"weight": "0",
"attribute_name": "Cor",
"attribute_value": "Vermelho",
"has_variations": "",
"image": "",
"sku": "11011"
},
Será que tenho salvação?