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

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

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

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

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

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

wp_remove_object_terms( $object_id, $terms, $taxonomy );
wp_remove_object_terms( $object_id, $terms, $taxonomy );
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);
<?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);
<?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
SKU123,Cat1
SKU456,Cat1,Cat2
SKU789,Cat1,Cat2,Cat3
SKU123,Cat1 SKU456,Cat1,Cat2 SKU789,Cat1,Cat2,Cat3
© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
Worrying does not empty tomorrow of its troubles, it empties today of its strength.
担忧不会清空明日的烦恼,它只会丧失今日的勇气
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容