Woocommerce 更新所有产品的 sku?筛选?

Woocommerce update sku of all products? filter?

我想将 SKU 设置为产品的 ID..但找不到合适的过滤器来使用?

是否有发送产品SKU的过滤器?

add_filter( 'woocommerce_get_sku', 'update_sku', 10, 1);

function update_sku( $sku ){

//set $newsku as product id


    return $newsku;
}

我该如何做到这一点?我有 1000 种没有 SKU 的产品。我试过一个名为 SKU generator 的插件,但它不起作用。任何帮助表示赞赏。

您可以通过将以下代码添加到您的 functions.php 文件并在添加后转到您的站点 example.com 一次。

之后从 functions.php.

中删除以下代码
    add_filter( 'init', 'update_sku', 10, 1);

    function update_sku( $sku ){

        $args = array(
                'post_type' => 'product',
                'posts_per_page' => 12
                );
        $i=0;
        $loop = new WP_Query( $args );

        if ( $loop->have_posts() ) {
            while ( $loop->have_posts() ) : $loop->the_post();

                $random_sku = mt_rand(100000, 999999);

                update_post_meta($loop->post->ID,'_sku',$random_sku);

                $i++;
            endwhile;
        } else {
            echo __( 'No products found' );
        }
        wp_reset_postdata();
    }

注意: 如果您在使用一次后不删除,则每次您访问您网站的任何页面时,产品 SKU 都会发生变化。

将其添加为短代码并使 SKU 与产品 ID 相同。

add_shortcode( 'update_sku', 'update_sku', 10, 1);

function update_sku( $sku ){

    $args = array(
            'post_type' => 'product',
            'posts_per_page' => 12
            );
    $i=0;
    $loop = new WP_Query( $args );

    if ( $loop->have_posts() ) {
        while ( $loop->have_posts() ) : $loop->the_post();

            

            update_post_meta($loop->post->ID,'_sku',$loop->post->ID);

            $i++;
        endwhile;
    } else {
        echo __( 'No products found' );
    }
    wp_reset_postdata();
}

然后在页面中使用这个短代码并打开一次。所以它不会每次都重新创建 sku。