从XML提要向WordPress添加类别分配

从XML提要向WordPress添加类别分配,xml,wordpress,add,feed,categories,Xml,Wordpress,Add,Feed,Categories,我正在为我的实习工作构建一个定制插件,加载几个XML产品提要。这些提要都分配了类别,每个提要的名称都略有不同,因此我开始在管理员UI的帮助下对它们进行规范化,管理员可以在UI中为类别填写新名称 这就是合并所有提要、删除重复项并更改名称后categories数组的外观。当然,在实际应用程序中,此阵列要长得多 Array ( [targetaudience] => Array ( [Baby boys] => [B

我正在为我的实习工作构建一个定制插件,加载几个XML产品提要。这些提要都分配了类别,每个提要的名称都略有不同,因此我开始在管理员UI的帮助下对它们进行规范化,管理员可以在UI中为类别填写新名称

这就是合并所有提要、删除重复项并更改名称后categories数组的外观。当然,在实际应用程序中,此阵列要长得多

Array
(
    [targetaudience] => Array
        (
            [Baby boys] => 
            [Baby girls] => 
            [Boys] => Boys
            [Boy] => Boys
            [Girls] => Girls
            [Girl] => Girls
            [Unisex] => 
        )

    [productgroup] => Array
        (
            [Pants short] => Pants
            [Pants long] => Pants
            [Trousers] => Pants
            [T-shirt] => T-shirts
            [Shirt] => T-shirts
            [Shirts] => T-shirts
            [T-shirt long-sleeve] => T-shirts
        )
);
这是将数组中的类别添加到WordPress的代码

foreach($parent_categories as $parent_name => $child_categories) {

    //Create parent category
    $parent_id = wp_create_category($parent_name);


    //If parent-category was created successfully
    if($parent_id!=0) {         
        foreach($child_categories as $old_cat_name => $new_cat_name) {
            if($new_cat_name=='') {
                //Use old name
                wp_create_category($old_cat_name, $parent_id);
            } else {
                //Use new name
                wp_create_category($new_cat_name, $parent_id);                  
            }
        }
    }
}
它所做的是检查$parent_categories数组中的类别名称,如果有新名称,它将使用该数组值,否则它将只使用旧名称数组键。 我希望我把我的意图说清楚。 问题是,当我执行代码时,它只添加父类别,即“targetaudience”和“productgroup”,当我通过WordPress类别页面删除这些父类别时,它会立即删除它们并添加所有其他类别。那不可能是正常的行为

非常感谢您的帮助


编辑:我检查了数据库,脚本执行后,所有类别都添加到数据库中。但当我查看WP类别页面时,它会显示父类别和空页面的分配,它会显示“266个项目”和“14个页面”,但这些页面是空的。仅当我删除或编辑任何一个类别时,其余类别才会显示。有时,最后一个父类别甚至没有被添加,尽管当我从循环中回显它时,它就在那里,所以添加类别时一定出了问题。

经过一周的努力,我终于找到了一个解决方案,对于那些有同样问题的人来说,问题在于类别缓存,添加类别后不会更新。下面的代码片段修复了这个问题:删除选项“category_children”;