2016-06-20 36 views
0

私は別のwocommerceウェブサイトからAPIを取得し、私の製品skuでいくつかの情報を取得します この情報を投稿後にメタ情報に追加するにはどうすればいいですか? 私は製品を作成したいと思う、情報はAPIおよびプロダクトSKUを取ってポストメタに保存する。WordPress:製品woocommerceを保存する前に新しい投稿メタを追加する方法

私はこのフックを見つけたが、私は、これは

<?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 

答えて

1

Woocommerce製品を動作していないと思いますが、ワードプレスの記事です。 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'); 
    } 
} 
+0

このコードは、woocommerce製品またはすべてのワードプレスの投稿で動作しますか? –

+0

デフォルトでは、すべてのポストタイプで機能しますが、ポストタイプは関数内にあり、ポストタイプがプロダクトのみの場合はポストメタを追加する条件を設定できます。 – Milap

+0

THXそんなに仲間 –

0

下記のコードを試してください。 code $ uniqueは、meta値が一意であるかどうかに基づいて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); 
    }  
} 
+0

このコードは、woocommerce製品またはワードプレスの投稿すべてで動作しますか? –

+1

この短いコードも投稿用に機能します。そのためには 'in_array($ post-> post_type、array( 'post'))'などのポストタイプを少し変更する必要があります。 – vidhi

0
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->クエリ(。。。$ wpdb-> $のテーブル名( 'UPDATE' を準備 'SET meta_value = "テスト" post_idの=' の$ post_idの))。 }

関連する問題