WordPress: как добавить новую мета-публикацию перед сохранением продукта woocommerce

У меня есть API с другого веб-сайта Wocommerce и я получаю некоторую информацию с моим продуктом SKU. Как я могу добавить эту информацию для публикации мета после создания нового продукта? Я хочу, когда я создаю продукт, информацию беру с API и SKU продукта и сохраняю для публикации мета.

я нашел этот крючок, но я думаю, что это не работает

<?PHP
function my_product_att( $sku ) {
   // my api codes and take information and use      
   add_post_meta('product_id','key','value');
   // i haven't problem here i just need Appropriate hook 
}
add_action( 'save_post', 'my_product_att' ); // this hook not work for woocommerce

3 ответа

Решение

Продукты Woocommerce являются сообщениями WordPress. Вы можете использовать WordPress Hooks, как save_post & $post_id в качестве аргумента. Вы проходите $sku что неправильно.

add_action( 'save_post', 'wpse_110037_new_posts' );
function wpse_110037_new_posts($post_id){
    $post_type = get_post_type($post_id);
    if($post_type == 'products') {
        add_post_meta($post_id,'key','value');
    }
}

Попробуйте код ниже. Обратите внимание, что в коде $unique true или же false основанный на том, если мета-значение должно быть уникальным или нет.

add_action('transition_post_status', 'product_created_function', 10, 3);
function product_created_function($newstatus, $oldstatus, $post) {
    if($oldstatus != 'publish' && $newstatus == 'publish' && !empty($post->ID) && in_array( $post->post_type, array( 'product') ) ) {
         add_post_meta( $post->ID, $key, $value,$unique );
    }    
 }
add_action( 'save_post', 'prowp_save_meta_boxdddd' );
function prowp_save_meta_boxdddd( $post_id ) {
global $wpdb;
$table_prefix = $wpdb->prefix;
$tablename = $table_prefix.'postmeta';

$wpdb->query($wpdb->prepare('UPDATE '.$tablename.' SET meta_value="test" WHERE post_id='.$post_id)); }

Другие вопросы по тегам