我有此功能,当页面加载时会触发。它会检查发布类型是否为“产品”,在这种情况下,我需要更改产品价格并保存页面。
我工作正常,但是我需要知道如何设置新产品的价格。
function changeAndSave( $array ) {
$post_type = get_post_type();
if ($post_type == "product"){
/*GET THE PRODUCT*/
global $product;
$product_id=$product->id;
/*GET CURRENT PRICE*/
$currentPrice=$product->get_price_html();
/*SET NEW PRICE*/
/* HERE.... ¿¿ how do I set my new price */
$newPrice = 100€;
/*SAVE THE PRODUCT*/
$product = wc_get_product($product_id);
$product->save();
}
};
// add the action
add_action( 'loop_start', 'changeAndSave', 10, 1 );
更新:我尝试了此操作,但不起作用:
function changeAndSave( $array ) {
$post_type = get_post_type();
if ($post_type == "product"){
/*GET THE PRODUCT*/
global $product;
$product_id=$product->id;
$product = wc_get_product($product_id);
/*GET CURRENT PRICE*/
$currentPrice=$product->get_price_html();
/*SET NEW PRICE*/
$newRegularPrice = 81;
$product->set_regular_price($newRegularPrice);
/*SAVE THE PRODUCT*/
$product->save();
}
};
// add the action
add_action( 'loop_start', 'changeAndSave', 10, 1 );
答案 0 :(得分:2)
已更新
首先,您没有为此使用正确的钩子,因为它需要在页面加载之前被触发。
尝试以下操作(对于简单产品):
add_action( 'template_redirect', 'change_and_save_product_price' );
function change_and_save_product_price() {
if ( get_post_type() === "product" ){ // or use: is_product()
// HERE your new product price
$new_price = 100;
// Get an instance of the WC_Product Object
$product = wc_get_product( get_the_id() );
if ( $product->is_type('simple') ) {
// Get current price (if needed)
// $price = $product->get_price();
// Set the new price
$product->set_regular_price( $new_price );
$product->set_price( $new_price );
// (optionally) reset sale price => uncomment below
// $product->set_sale_price( false );
// Save to database refresh refresh caches
$product->save();
}
}
}
代码进入活动子主题(或活动主题)的functions.php文件中。经过测试,可以正常工作。
答案 1 :(得分:0)
您可以尝试在代码中使用给定产品ID的代码块。
要更新正常价格:
CGImageRef cgimg = CGWindowListCreateImage(CGRectZero, kCGWindowListOptionIncludingWindow, (int)self.window.windowNumber, kCGWindowImageBoundsIgnoreFraming);
NSImage *image = [[NSImage alloc] initWithCGImage:cgimg size:viewRect.size];
NSData *imageData = [image TIFFRepresentation];
[imageData writeToFile:fName atomically:NO];
要更新售价:
update_post_meta($productID, '_regular_price', $newRegularPrice);
更新-取决于您的评论:
如果它是简单产品:
update_post_meta($productID, '_sale_price', $newSalePrice);
如果是变体产品,请使用“ update_post_meta” 函数。
您还可以检查:
1-Woo-commerce 3.0 single product price is not changing properly
2-{{3}}