【发布时间】:2018-09-05 15:56:02
【问题描述】:
我创建了一个名为“sub_products”的新帖子类型,其中包含元标记“unit_price”。 在为包含所有“sub_products”帖子列表的每个 Woocommerce 产品分配一个新字段后,目标是根据选定的“sub_products”元“unit_price”更新每个产品价格。
function kulcskron_edit_post( $p1, $p2 )
{
if ( !is_admin() )
return;
if ( get_post_type() != 'product' )
return;
$sub_product_ids = $p2->get_meta( 'sub_products' );
if ( empty($sub_product_ids) )
return;
$product_regular_price = 0;
foreach ( $sub_product_ids as $id )
$product_regular_price += get_post_meta( $id, 'unit_price', true );
if ( $p1 == $product_regular_price )
return;
$p2->set_regular_price( $product_regular_price );
$p2->save();
}
add_action( 'woocommerce_product_get_price', 'kulcskron_edit_post', 10, 2 );
我尝试了所有可能的钩子来完成这项工作:
add_action( 'the_post', 'kulcskron_edit_post', 9, 1 );
add_action( 'edit_post', 'kulcskron_edit_post', 10, 2 );
add_action( 'pre_get_posts', 'kulcskron_edit_post' );
add_action( 'save_post', 'kulcskron_edit_post' );
这段代码更新了价格,但以一种奇怪的方式:
管理员单品编辑视图:价格不会马上更新,只是在我重新访问编辑屏幕后。
管理产品列表视图:每个价格都是 0。
前端产品页面查看:显示价格为0。
当单个产品保存在管理视图中时,如何根据分配的“sub_products”“unit_price”帖子元更新产品价格?
【问题讨论】:
标签: php wordpress woocommerce