是否更改/删除默认帖子类型和类别?

时间:2017-04-20 作者:Johansson

我正在开发一个包含3种不同帖子类型和4种不同分类法的网站来保存帖子。

默认的帖子类型和类别在此模板中未使用,由于许多作者对WordPress不太熟悉,我们无法始终控制它们,我希望删除、更改或至少隐藏类别和默认帖子,因此他们必须在自定义类型下发布。

例如,有人在“突发新闻”类型下创建了一篇新帖子,并将其分配给News 分类法,这篇文章不会被归入任何类别(未分类)。

如果他将此作为普通帖子类型发布,则不会在网站的任何地方显示。

有可能解决这个问题吗?

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

是的,这是一个非常简单的解决方案。将此代码段添加到主题功能中。php

add_action(\'admin_menu\',\'remove_default_post_type\');

function remove_default_post_type() {
    remove_menu_page(\'edit.php\');
}
更多信息:https://www.techjunkie.com/remove-default-post-type-from-admin-menu-wordpress/https://codex.wordpress.org/Function_Reference/remove_menu_page

SO网友:Vinod Dalvi

您可以使用以下代码删除默认的帖子类型和类别菜单。

add_action(\'admin_menu\',\'remove_post_cat_menu\');

function remove_post_cat_menu() {
    remove_submenu_page( \'edit.php\', \'post-new.php\' );
    remove_submenu_page( \'edit.php\', \'edit-tags.php?taxonomy=category\' ); // Removes default category menu
}

SO网友:Johansson

基于@Thijs answer,我分三个部分完成了这项工作:

首先,从“管理”菜单中删除“编辑帖子”菜单。

add_action(\'admin_menu\',\'remove_default_post_type\');
function remove_default_post_type() {
    remove_menu_page(\'edit.php\');
}
然后,通过移除new-post 按钮,并更改默认链接。

add_action(\'admin_menu\',\'remove_default_post_type\');
function remove_default_post_type() {
    remove_menu_page(\'edit.php\');
    $default_link = $wp_admin_bar->get_node(\'new-content\');
    $default_link->href = \'#\';
    $wp_admin_bar->add_node($default_link);
}
现在,是时候从自定义帖子类型中完全删除类别了,但只将标记分配给分类法,同时创建自定义分类法了。

\'taxonomies\' => array(\'post_tag\' )

这将删除默认帖子类型和类别的任何跟踪。由于标记被分配给分类法,我们仍然可以从自定义帖子类型的菜单访问标记。但是,直接链接仍然可以访问,可以使用用户角色挂钩轻松阻止或重定向直接链接。