我需要更新一个WooCommerce产品的SKU,但我没有尝试工作。
我正在尝试更新一个产品的SKU。我建立了一个新的选择自定义字段(在下面的代码中)在库存设置上使用我从另一个平台通过API导入的选项)。这工作正常。我可以保存代码,打印它。但我不能简单地用这个代码更新SKU。
我试了很多片段,但都不管用...
add_action( 'woocommerce_process_product_meta', 'save_leadlovers_custom_fields');
function save_leadlovers_custom_fields( $post_id )
{
//These two guys works perfectly
update_post_meta( $post_id, '_leadlovers_integration_check', esc_attr( $_POST['_leadlovers_integration_check'] ) );
update_post_meta( $post_id, '_leadlovers_integration_product', esc_attr( $_POST['_leadlovers_integration_product'] ) );
//First, I tried this... no success
//update_post_meta( $post_id, '_sku', esc_attr( $_POST['_leadlovers_integration_product'] ) );
//Then I tried this, with no changes, forcing by hand the
//update_post_meta( $post_id, '_sku', '30445' );
//I tried using the function set_sku() too... nothing happens
//$product = wc_get_product( $post_id );
//$product->set_sku( get_post_meta( $post->ID, '_leadlovers_integration_product', true ) );
//nothing too with this...
$product = wc_get_product( $post_id );
$product->set_sku( '30445' ) ;
///i tried even make the procedure on other function...
}
好吧,有人知道发生了什么,还是......什么都没发生??
谢谢你,
3条答案
按热度按时间wsewodh21#
update_post_meta
实际上应该可以正常工作。您仍然应该将最后一个save
函数用于另一个set_sku函数。如果这也不起作用,那么你的
woocommerce_process_product_meta
钩子有问题,或者它在你希望的时间内不起作用。编辑
或者我猜是这样的。实际上你可能过早地使用了钩子来保存 meta。所以你保存了一些东西,但是_sku在你的函数之后又被保存了。所以你应该尝试一个不同的钩子来确保它在正确的时间工作。如果你能提供更多的细节,我会很高兴的,这样我就可以帮助你了。
编辑2
我又看了一遍,也许钩子应该起作用。你能通过尝试这个来延迟运行时间吗?
2skhul332#
此挂接在将产品保存到数据库之前运行。此挂接专用于在保存之前更改任何产品数据。
ewm0tg9j3#
感谢@Akin和@mujuonly...
我首先尝试将优先级设置为50并使用
$product->set_sku()
,但是,因此,我们需要一起使用$product->save
...只是保存不起作用。他们,我试图使用update_post_ meta与优先级设置为50,只是工作...
谢谢