我们最近从Big commerce向woocommerce导入了一家大型产品商店,但在类别方面遇到了问题。
产品仅是子类别的链接,这意味着如果您访问父类别,则不会显示任何产品。
Product linked to child category but not parent
是否有一种方法可以使所有子类别大规模重新链接到父类别?该商店有6000多种产品和数百个类别,因此即使使用批量编辑工具,也需要很长时间才能完成此任务。
预先感谢您,如果已经提出要求,我们深表歉意,很难找到适合这种情况的措词。
**我遇到了这段代码**
add_action('save_post', 'assign_parent_terms', 10, 2);
function assign_parent_terms($post_id, $post){
if($post->post_type != 'product')
return $post_id;
// get all assigned terms
$terms = wp_get_post_terms($post_id, 'product_cat' );
foreach($terms as $term){
while($term->parent != 0 && !has_term( $term->parent, 'product_cat', $post )){
// move upward until we get to 0 level terms
wp_set_post_terms($post_id, array($term->parent), 'product_cat', true);
$term = get_term($term->parent, 'product_cat');
}
}
}
有人可以指出调整代码的正确方向,这样我就不必单独保存每个产品,而只需运行一次即可更新所有产品?
再次感谢您的帮助。
答案 0 :(得分:0)
请勿执行add_action()
部分。使用
$products = get_posts(['post_type' => 'product', 'posts_per_page' => 100, 'offset' => 0]);
var_dump(count($products));
foreach ($products as $product) {
assign_parent_terms($oroduct->ID, $product);
}
刷新页面。每次刷新后手动将偏移量增加100,直到转储显示0。