save_postフックで商品重量を設定する方法はありますか?Woocommerce - save_postに商品重量を設定するフック
私は、コードを以下ましたが、私は体重を上書きする方法がわからない:
add_action('save_post', 'change_weight');
function change_weight($post_id) {
$WC_Product = wc_get_product($post_id);
}
してください、助けて!
save_postフックで商品重量を設定する方法はありますか?Woocommerce - save_postに商品重量を設定するフック
私は、コードを以下ましたが、私は体重を上書きする方法がわからない:
add_action('save_post', 'change_weight');
function change_weight($post_id) {
$WC_Product = wc_get_product($post_id);
}
してください、助けて!
あなたがwoocommerce_process_product_meta_$product_type
を使用する場合は、あなたはWooCommerceの健全性チェックをやり直すことができるので、ナンスを心配する必要はありません。
// This will work in both WC 2.6 and WC 2.7
add_action('woocommerce_process_product_meta_simple', 'so_42445796_process_meta');
function so_42445796_process_meta($post_id) {
$weight = 100;
update_post_meta($post_id, '_weight', $weight);
}
WC 2.7では、データの保存方法を抽象化するCRUDメソッドが導入されます。私は彼らが最終的にデフォルトのWordPressテーブルから製品や製品メタを移動すると思うが、私は確かに分からない。 2.7では、3210フックを使用して、保存する前に$product
オブジェクトを変更できます。
// Coming in WC2.7 you can use the CRUD methods instead
add_action('woocommerce_admin_process_product_object', 'so_42445796_process_product_object');
function so_42445796_process_product_object($product) {
$weight = 100;
$product->set_weight($weight);
}
重量を設定するには、ポストメタを更新する必要があります。これは次のようにすることができます:
update_post_meta($post_id, '_weight', $weight);
$ weightは、上記のコードでは、重み付けする値を含む変数です。ただし、save_postフックは、投稿が保存されるたびにトリガされるので、投稿、ページ、製品などをブログに投稿することができます。投稿が製品であることを確認することをお勧めします。あなたは、あなたがそれを変更する前に、製品の現在の体重を取得したい場合
if (get_post_type ($post_id) == 'shop_order') {
update_post_meta($post_id, '_weight', $weight);
}
また、あなたはこのようにそれを行うことができます:あなたはこのようなことを行うことができます
$product = wc_get_product($post_id);
$weight = $product->get_weight();