问题描述
我将产品ID数组(作为整数)传递给以下函数,该函数还接受当前的类别ID。这可以在wordpress / WooCommerce管理员的产品类别编辑屏幕上运行,并且基本上只是将多个产品分配给当前类别的一种快速方法。想法是将所有当前不在此类别中的产品分配给该类别。
这在一定程度上起作用。当我var dump产品对象时,它会显示新添加的类别,并且该类别在产品编辑屏幕中被打勾。但是,在前端上查看类别时,产品未显示。然后,进入站点管理员,编辑产品(无更改)并进行更新,然后将其显示在前端的类别中。因此,似乎需要先保存产品,然后产品才能显示出来,但事实并非如此,在以下功能中以编程方式保存产品时,该产品仍然无法正常工作。
我添加了一个if
语句,还将子级也添加到类别中,只是为了排除它,但这无济于事。
有人可以请我对此进行健全性检查吗?
function spc_assign_new_products($term_id,$product_ids)
{
$new_products = wc_get_products([
'limit' => -1,'include' => $product_ids,'status' => 'publish','tax_query' => [
[
'taxonomy' => 'product_cat','field' => 'term_id','terms' => [$term_id],'operator' => 'NOT IN','include_children' => false,]
],]);
foreach ($new_products as $product) {
wp_set_object_terms($product->get_id(),(int) $term_id,'product_cat',true);
if ($children = $product->get_children()) {
foreach ($children as $child_id) {
wp_set_object_terms($child_id,true);
}
}
}
}
在管理员中单击“更新”之前和之后进行各种转储产品对象,除了修改的时间戳之外,没有其他任何区别,所以我很茫然。我还排除了缓存,在本地开发站点上完全禁用了缓存。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)