首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Woocommerce SKU生成器:为与父sku相同的所有变体生成一个sku

Woocommerce SKU生成器:为与父sku相同的所有变体生成一个sku
EN

Stack Overflow用户
提问于 2017-12-23 19:33:02
回答 1查看 1.2K关注 0票数 0

我需要一个简单的函数,允许我添加或替换空的sku代码,以便在我发布的产品中使用产品的父sku。

有什么办法可以得到这份工作吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-23 21:19:30

更新:用父SKU (变量产品SKU)替换已发布产品中的空SKU代码,尝试只为管理用户角色工作的函数。

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

要运行此函数,浏览您的商店页面:

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

当所有变体SKU都将被更新时,一条消息会让您知道工作已经完成。

守则:

代码语言:javascript
复制
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文件中。

测试和工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47955386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档