简单解释下,文章类:博客文章、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
© 版权声明
文章版权归作者所有,未经允许请勿转载。
WWW.ANXKJ.TOP
暂无评论内容