Woocommerce SKU Generator:生成与父sku相同的所有变化的sku

问题描述 投票:0回答:1

我需要一个简单的功能,允许我添加或替换我的已发布产品中的变化的空sku代码与产品的父sku。

有没有办法获得这项工作?

php wordpress woocommerce product sku
1个回答
0
投票

更新:要使用父SKU(变量产品SKU)替换已发布产品中的变化的空SKU代码,请尝试此功能,该功能仅适用于管理员用户角色。

在运行之前执行数据库备份

要运行此功能,请浏览您的商店页面:

  • 每次更新2500个空变量SKU。
  • 消息将显示更新的变体计数。
  • 每次您需要重新加载页面以处理2000个变体SKU。,

当所有变体SKU都将更新时,会显示一条消息,告知您作业已完成。

代码:

add_action('woocommerce_before_main_content', 'update_variations_sku', 100 );
function update_variations_sku(){
    global $wpdb;
    $results = $results2 = array();
    $limit = 2500; // Number of variations to process

    // The SQL query (get the variations with empty sku and their parent product ID)
    $query = $wpdb->get_results( "
        SELECT p.ID, p.post_parent
        FROM {$wpdb->prefix}posts as p
        INNER JOIN {$wpdb->prefix}postmeta as pm ON p.ID = pm.post_id
        WHERE p.post_type LIKE 'product_variation'
        AND p.post_status LIKE 'publish'
        AND pm.meta_key LIKE '_sku'
        LIMIT $limit
    " );

    if( count($query) == 0 ){
        echo "<p><pre>The job is finished, you can remove the code</pre></p>";
        return; // exit
    }

    // Loop through variation Ids and get the parent variable product ID
    foreach( $query as $value )
        $results[$value->post_parent][] = $value->ID;

    // Loop through variation Ids and set the parent sku in related empty variations skus
    foreach($results as $parent_id => $variation_ids){
        $parent_sku = get_post_meta( $parent_id, '_sku', true );
        $count = 0;
        foreach($variation_ids as $variation_id){
            $count++;
            update_post_meta( $variation_id, '_sku', $parent_sku.'-'.$count );

        }
    }
    if( count($query) < $limit ){
        echo "<p><pre>The job is finished, you can remove the code <br>$count variations SKUs have been updated</pre></p>";
    } else {
        echo "<p><pre>$count variations SKUs have been updated (continue reloading the page again)</pre></p>";
    }
}

代码位于活动子主题(或主题)的function.php文件中。

经过测试和工作。

© www.soinside.com 2019 - 2024. All rights reserved.