在 Wordpress 中禁用自定义 Post 类型的类别选项

Disable the Category option for Custom Post Type in Wordpress

我正在开发一个网站,用户可以在该网站上使用自定义 post 类型将视频添加到滑块。实际上,存在三个不同的滑块,每个滑块中的视频由分配给它们的类别决定。这是注册 cpt 的代码:

public function videos() {
    register_post_type( 'videos',
            [
            'labels'       => [
              'name'          => 'Videos',
              'singular_name' => 'Videos'
              ],
            'public'       => true,
            'show_in_rest' => true,
            'taxonomies'   => [ 'category' ],
            'rewrite'      => [ 'slug' => 'videos' ],
            'supports'     => [ 'title', 'custom-fields', 'editor', 'excerpt', 'thumbnail' ],
            'menu_icon'    => 'dashicons-format-video'
        ]
    );
  }
}


我已经通过 WP Admin 添加了三个不同的类别,我想阻止用户使用或创建除我创建的类别之外的任何其他类别,因此为了做到这一点,我会就像管理栏内 CPT 菜单的“类别”选项卡不存在一样,我希望自定义 post 元数据框中的“+ 添加新类别”link 也一样。底线是,除了将现有的类别分配给新的 post 之外,用户不应有任何业务处理类别。

这似乎是一个非常简单和常见的修复,所以我很惊讶,因为到目前为止我还没有找到有效的解决方案。 This 非常接近我要查找的内容,但由于我没有添加 register_taxonomy_for_object_type( 'category', 'custom_type' ); 行,所以我没有任何要删除的内容。我对这一切感到非常困惑,如有任何帮助,我们将不胜感激。

'taxonomies' => [ 'category' ] 是您调用 register_taxonomy_for_object_type( 'category', 'custom_type' ); 的方式,但是通过删除它,您从 post 类型中删除了分类法,而不仅仅是菜单。

我建议您为您的视频注册自定义分类并为其分配管理权限。

正在注册分类法:https://developer.wordpress.org/reference/functions/register_taxonomy/

capabilities 选项将允许您只允许管理员更改它们,因此您的 capabilties 看起来像这样。

'capabilities' => array(
    'manage_terms'          => 'update_core',
    'edit_terms'            => 'update_core',
    'delete_terms'          => 'update_core',
),

最后,您将拥有一个 moderators/editors 可以管理的自定义 post 类型和一个附加到该 post 类型的自定义分类法,只有管理员可以更改但 mods/editors 可以赋值。