Woocommerce:是否可以根据另一种产品的价格自动更改一种产品的价格?
Woocommerce: Is it possible to change the price of a product automatically based on the price of another product?
我想知道是否可以在Woocommerce中'bind'不同产品a和b的价格,这样当手动更改产品a的价格时,产品b的价格会自动改变。 (这两种产品的价格应该始终相同)。我什至可以为类似的东西写一个脚本吗?如果是这样,它是否也适用于产品的变体?
额外信息:我阅读了 Dynamic Pricing 插件,但据我了解它用于不同的目的。
我猜是这样的吧?
add_action( 'updated_post_meta', 'bind_product_prices', 10, 4 );
function bind_product_prices( $meta_id, $post_id, $meta_key, $meta_value ) {
$product_a_id = 21;
$product_b_id = 33;
if ( $post_id !== $product_a_id && $post_id !== $product_b_id ) {
return;
}
if ( $meta_key !== '_regular_price' ) {
return;
}
$new_price = floatval( $meta_value );
if ( $post_id == $product_a_id ) {
$product_b = wc_get_product( $product_b_id );
$product_b_price = (float) $product_b->get_regular_price();
if ( $product_b_price === $new_price ) {
return;
}
$product_b->set_regular_price( $new_price );
$product_b->save();
}
if ( $post_id == $product_b_id ) {
$product_a = wc_get_product( $product_a_id );
$product_a_price = (float) $product_a->get_regular_price();
if ( $product_a_price === $new_price ) {
return;
}
$product_a->set_regular_price( $new_price );
$product_a->save();
}
}
我想知道是否可以在Woocommerce中'bind'不同产品a和b的价格,这样当手动更改产品a的价格时,产品b的价格会自动改变。 (这两种产品的价格应该始终相同)。我什至可以为类似的东西写一个脚本吗?如果是这样,它是否也适用于产品的变体?
额外信息:我阅读了 Dynamic Pricing 插件,但据我了解它用于不同的目的。
我猜是这样的吧?
add_action( 'updated_post_meta', 'bind_product_prices', 10, 4 );
function bind_product_prices( $meta_id, $post_id, $meta_key, $meta_value ) {
$product_a_id = 21;
$product_b_id = 33;
if ( $post_id !== $product_a_id && $post_id !== $product_b_id ) {
return;
}
if ( $meta_key !== '_regular_price' ) {
return;
}
$new_price = floatval( $meta_value );
if ( $post_id == $product_a_id ) {
$product_b = wc_get_product( $product_b_id );
$product_b_price = (float) $product_b->get_regular_price();
if ( $product_b_price === $new_price ) {
return;
}
$product_b->set_regular_price( $new_price );
$product_b->save();
}
if ( $post_id == $product_b_id ) {
$product_a = wc_get_product( $product_a_id );
$product_a_price = (float) $product_a->get_regular_price();
if ( $product_a_price === $new_price ) {
return;
}
$product_a->set_regular_price( $new_price );
$product_a->save();
}
}