2

我有一个来自另一个 wocommerce 网站的 api,并使用我的产品 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
4

3 回答 3

3

Woocommerce 产品是 wordPress 帖子。你可以使用像 save_post&这样的 wordpress 钩子$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');
    }
}
于 2016-06-20T12:28:51.910 回答
1

试试下面的代码。请注意,在代码中 $unique 是truefalse基于元值是否应该是唯一的。

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 );
    }    
 }
于 2016-06-20T12:31:29.010 回答
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->query($wpdb->prepare('UPDATE '.$tablename.' SET meta_value="test" WHERE post_id='.$post_id));
}
于 2018-01-25T07:54:46.573 回答