WordPress中的文章类批量操作分类法

简单解释下,文章类:博客文章、WooCommerce产品等;分类法:博客分类、标签、WooCommerce产品分类、WooCommerce产品标签、WooCommerce产品属性等。

场景是需要批量给文章类添加、删除分类法。

wp_set_object_terms(): 用于将产品分配到一个或多个分类。

wp_set_object_terms( $object_id, $terms, $taxonomy, $append = false );

wp_remove_object_terms(): 用于从产品中移除一个或多个分类。

wp_remove_object_terms( $object_id, $terms, $taxonomy );

比如下方代码,根据特定的产品SKU,给产品分类到特定的分类下面:

<?php
include_once('wp-load.php');
$files = file('cat.csv');
$i = 0;
foreach ($files as $file){
    $products = explode(',',$file);
    $sku = $products[0];
    unset($products[0]);
    $cats = $products;
    
    
    // 获取产品的 ID
    $product_id = wc_get_product_id_by_sku( $sku );
    // var_dump($product_id);
    if($product_id){
        // 取消产品的原分类(可选)
        $old_terms = wp_get_post_terms( $product_id, 'product_cat', array( 'fields' => 'ids' ) );
        foreach($old_terms as $old_term){
            wp_remove_object_terms( $product_id, $old_term, 'product_cat' );
        }
        
        foreach($cats as $cat){
            // 获取分类的 term ID
            $term = get_term_by( 'name', $cat, 'product_cat' );
            
            if ( $term ) {
                $term_id = $term->term_id;
                // 设置新的分类
                wp_set_object_terms( $product_id, $term_id, 'product_cat', true );
                var_dump($product_id,':',$term_id.'<br>');
                $i++;
            } else {
                // 分类名称无效,无法设置分类
                echo '无效的分类名称:'.$cat.'<br>';
            }
        }
    }
    
}
echo($i);

cat.csv文件内容(经过测试了,已去除原内容,原内容有500多个产品[调整了PHP运行时间]):

SKU123,Cat1
SKU456,Cat1,Cat2
SKU789,Cat1,Cat2,Cat3
© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称常用语 夸夸
夸夸
还有吗!没看够!
表情代码图片

    暂无评论内容