【问题标题】:Woocommerce update sku of all products? filter?Woocommerce 更新所有产品的 sku?筛选?
【发布时间】:2021-10-28 12:49:40
【问题描述】:

我想将 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 生成器的插件,但它不起作用。任何帮助表示赞赏。

【问题讨论】:

    标签: wordpress woocommerce


    【解决方案1】:

    您可以通过将以下代码添加到您的 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 会在您每次访问您网站的任何页面时发生变化。

    【讨论】:

    • 只需在你的函数中添加一些参数检查,比如 if(isset(request param)) 然后更新就可以了。
    • 他只想设置一次SKU。所以没必要再多说:)
    • 谢谢你,我会在我的网站上试试这个。
    • 确保在实现代码之前备份数据库。
    • 如果我将代码留在functions.php中,为什么SKU会改变?产品 ID 不是动态的?
    【解决方案2】:

    将其添加为简码并使 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-04
      相关资源
      最近更新 更多