Apabila menyimpan produk, saya ingin menyemak sama ada produk tersebut mempunyai atribut tertentu. Setahu saya, pa_region
. Jika tidak, saya ingin menambah set atribut dan istilah atribut pada produk.
Kalau property pa_region
dah set, tak nak update/ubah.
Saya lihat ada kaedah yang dipanggil wp_set_object_terms
的函数(文档)。我尝试了一些方法,但我认为 update_post_meta
iaitu cara yang betul.
Daripada jawapan ini saya tahu cara menyemak sama ada produk mempunyai atribut. Saya akan menambah cek itu kemudian.
Pada masa ini saya cuba menambah atribut terlebih dahulu. Belum berfungsi dengan betul.
Saya menemui soalan yang sama di sini dan saya cuba menggunakan kod itu untuk mencapai tujuan saya. Tetapi ini tidak berfungsi. Saya rasa sebabnya ialah ciri tersebut memerlukan sifat yang sudah ada dalam produk? !
Sunting: Saya telah menyemak. Walaupun atribut pa_region
ditetapkan dalam produk, kod tidak mengemas kini nilainya.
Ini kod semasa saya:
add_action('woocommerce_update_product', 'save_product_region'); function save_product_region( $post ) { if( in_array( $post->post_type, array( 'product' ) ) ){ $test = 'test'; $product_id = $post->ID; $product_attributes = get_post_meta( $product_id ,'_product_attributes', true); var_dump($product_attributes); // Loop through product attributes foreach( $product_attributes as $attribute => $attribute_data ) { // Target specif attribute by its name if( 'pa_region' === $attribute_data['name'] ) { // Set the new value in the array $product_attributes[$attribute]['value'] = $test; break; // stop the loop } } update_post_meta( $product_id ,'_product_attributes', $product_attributes ); } }
$post pertama bukan objek. akan mengembalikan ID, yang bagus.