通过插件动态创建类别时,缺少“CATEGORY_CHILDS”选项

时间:2011-04-18 作者:Scott B

我已经找出了一个致命错误的来源,当一个全新的网站在安装和激活我正在使用的插件后预览时,就会发生这个错误。

问题似乎是未创建选项表中的“category\\u children”项。

有趣的是,似乎有两个操作触发WP来创建category\\u children选项。它们是:(1)激活包含创建类别代码的主题;(2)只需访问类别管理器。

如果我在激活插件后执行上述任一操作,将创建category\\u children选项(可能是由于在主题激活或edit-tags.php加载中进行了检查),错误就会消失。

以下是我在插件中用于创建类别的代码(仅在插件激活时执行):

        if(!get_cat_ID(\'nofollow\')){wp_create_category(\'nofollow\',1);}
        if(!get_cat_ID(\'noindex\')){wp_create_category(\'noindex\',1);}
我错过了什么?我是否需要显式调用一个方法,让WordPress为这些项目生成category\\u子选项数组?

更新:感谢scribu在下面提供的关于此错误原因的帮助,我发现此错误的部分修复方法是在wp\\u create\\u category()调用完成后放置此行:

clean_term_cache(\'\',\'category\'); 
然而,当在创建类别的同一插件中调用时,这不起作用。我必须把它放在一个独立的插件中,该插件与创建我的类别的插件分开激活。

2 个回复
最合适的回答,由SO网友:scribu 整理而成

这是分类层次结构缓存代码中的一个已知(且严重)错误:

http://core.trac.wordpress.org/ticket/14485

基本上,您必须通过删除该选项来强制刷新。

SO网友:John Doe

有同样的问题。已解决添加:delete_option("category_children")

插入类别后,显然这会刷新类别的缓存。其他的解决方法对我来说并不奏效。

结束

相关推荐

在WordPress中筛选分类术语的Get_Categories()

我只想在(自定义)帖子属于某个类别且region=该帖子的$name时显示该类别。因此,例如,我有一个自定义帖子(类型“business”),在子类别“pizzerias”(父类别“food”)和区域“Rotterdam”(自定义分类:“region”,自定义分类术语:“Rotterdam”)中分别命名为“Mamma Mia”。=>显示类别“pizzerias”(和父类别“food”)只是,我不知道如何做到这一点。如果你能帮我解决这个难题,我将不胜感激。<?php // $