/**
* Updates WooCommerce variation product meta data with REST API.
*
* @see https://wpcodebook.com/woocommerce-rest-api-update-variation-meta/
* @see https://woocommerce.github.io/woocommerce-rest-api-docs/
* @see https://developer.wordpress.org/reference/functions/wp_remote_request/
*
* @return bool|string true on success, error message otherwise
*/
function wpcodebook_update_variation_meta_data( $site_url, $ck, $cs, $variation_id, $meta_data ) {
// Request URL
$product_id = wp_get_post_parent_id( $variation_id );
$request_url = "/wp-json/wc/v3/products/{$product_id}/variations/{$variation_id}";
// Update variation meta data
$response = wp_remote_request(
untrailingslashit( $site_url ) . $request_url,
array(
'method' => 'PUT',
'sslverify' => false, // optional
'headers' => array(
'Authorization' => 'Basic ' . base64_encode( "{$ck}:{$cs}" ),
),
'body' => array(
'meta_data' => $meta_data,
),
),
);
// Check for WordPress errors
if ( is_wp_error( $response ) ) {
return $response->get_error_message();
}
// Check for remote response errors
if ( ! in_array( wp_remote_retrieve_response_code( $response ), array( 200, 201 ) ) ) {
return wp_remote_retrieve_response_message( $response );
}
// Success
return true;
}Example:
$site_url = 'https://example.com'; $ck = 'ck_8188e3d81427b2c74053c5ffeac4514e0e2c2092'; $cs = 'cs_f1af48ad80b14d95fc627566975c8426595a071f'; $variation_id = 1977; $meta_data = array( array( 'key' => 'ean', 'value' => '0614141123452', ), array( 'key' => 'mpn', 'value' => 'H2G2-42', ), ); wpcodebook_update_variation_meta_data( $site_url, $ck, $cs, $variation_id, $meta_data );
