我在我的woocommerce商店中将亚马逊产品作为产品变体。我正在尝试开发一个基于API请求自动设置变化价格的插件。
关注this post我在变体中添加了自定义字段。一个是亚马逊ASIN:
<label><?php _e( 'Amazon ASIN', 'woocommerce' ); ?></label>
<input type="text" size="20" name="amazon_asin[<?php echo $loop; ?>]" value="<?php echo $variation_data['_amazon_asin'][0]; ?>"/>
我现在要做的是在更新产品时使用ASIN字段中的值来从亚马逊获取价格。由于我有相同自定义字段的多个变体,我还需要检查amazon_asin文本字段是否实际具有值。我在想这样的事情:
add_action( 'update_post_meta', 'get_amazon_price', 10, 4 );
function get_amazon_price( $meta_id, $post_id, $meta_key, $meta_value ) {
global $product, $post;
if ( 'amazon_asin' == $meta_key ) {
$variations = $product->get_available_variations();
foreach ($variations as $key => $value) {
if (get_post_meta($value['variation_id'], '_amazon_asin', true) != null) {
$asin = get_post_meta($value['variation_id'], '_amazon_asin', true);
$publicKey = 'XXXXX';
$privateKey = 'XXXXX';
$xml = aws_signed_Request('de',
array(
"AssociateTag"=>"XXX",
"MerchantId"=>"Amazon",
"Operation"=>"ItemLookup",
"ItemId"=>$asin,
"ResponseGroup"=>"Medium, Offers"),
$publicKey,$privateKey);
$item = $xml->Items->Item;
$price = $item->Offers->Offer->OfferListing->Price->Amount;
update_post_meta($value['variation_id'], '_price', $price);
}
}
}
}
然而,这不起作用,这可能是错误的方式一起完成这一切。我知道(来自不同的脚本)aws_signed_Request工作正常。意思是如果我输入正确的$ asin,我会得到正确的$ price。其余的:说实话,我完全迷失了。
非常感谢任何帮助!
THX //的Seb