简单解释下,文章类:博客文章、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,给产品分类到特定的分类下面:
<?phpinclude_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,Cat1SKU456,Cat1,Cat2SKU789,Cat1,Cat2,Cat3SKU123,Cat1 SKU456,Cat1,Cat2 SKU789,Cat1,Cat2,Cat3SKU123,Cat1 SKU456,Cat1,Cat2 SKU789,Cat1,Cat2,Cat3
© 版权声明
THE END
暂无评论内容