以编程方式设置WooCommerce产品类别,可以正常工作,但产品未在Cat中显示

问题描述

我将产品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 (将#修改为@)