由于5.5 WP\\u分类对象现在有了新方法,get_rest_controller(), 允许每个分类法控制器重写。问题是,您的插件用一个版本覆盖了保存在全局$wp\\u分类缓存中的分类法,该版本不是真正的wp\\u分类法对象,只是一个stdObject属性包,因此不需要调用get\\u rest\\u controller()。
这是中的相关位:ut\\u registered\\u taxonomy()UserTags.php lines 83-101, 这是一个registered_taxonomy 操作处理程序。
public function ut_registered_taxonomy( $taxonomy, $object, $args ) {
global $wp_taxonomies;
// Only modify user taxonomies, everything else can stay as is
if ( $object != \'user\' ) {
return;
}
// Array => Object
$args = (object) $args;
// Register any hooks/filters that rely on knowing the taxonomy now
add_filter( "manage_edit-{$taxonomy}_columns", array( $this, \'set_user_column\' ) );
add_filter( "manage_{$taxonomy}_custom_column",
array( $this, \'set_user_column_values\' ), 10, 3 );
// Save changes
$wp_taxonomies[ $taxonomy ] = $args; // <--- this line is the problem
self::$taxonomies[ $taxonomy ] = $args;
}
请注意,我在“";“保存更改”;注释:这将覆盖的现有值
$wp_taxonomies[ $taxonomy ]
具有错误的值,并且无论如何都不需要,因为没有对分类属性进行任何更改。所以我建议删除这一行作为最简单的修复。
(公平地说,这段代码是在4.7中添加WP\\U分类法类之前编写的(object)
如果您更改了$args的内容并且需要更新$wp\\u分类法,那么cast是从$args创建分类法对象的正确方法。)
现在,我们还可以确保在self中有一个真正的WP\\u Taxonomy对象::$taxonomies,例如,而不是$args = (object) $args)
从$wp\\U分类中获取真实对象$args = $wp_taxonomies[ $taxonomy ]
在本次通话前不久放置的位置。但我认为这实际上没有必要。