如何从自定义帖子类型中删除或隐藏评论 » 禁用自定义帖子类型中的评论
已发表: 2020-01-31
您是否正在寻找隐藏自定义帖子类型评论或完全删除自定义帖子类型评论的最佳方法? 如果这样做,解决方案在于如何注册自定义帖子类型。 理想情况下,自定义帖子类型类似于页面和帖子,如果您允许它们具有这些功能,它们会继承页面和帖子的所有特征。
虽然您可以控制自定义帖子类型如何支持不同的功能,但可能难以控制第三方插件中自定义帖子类型或使用自定义帖子类型的主题所支持的功能。
因此,有必要了解如何删除您不希望在您的网站上出现的自定义帖子类型支持的评论或其他功能。
这将是一个非常简单的几个步骤过程,因为 WordPress 中有一个功能可以帮助您删除您不想要的自定义帖子类型的功能。
隐藏自定义帖子类型的评论
如上所述,要从自定义帖子类型中成功删除评论,您需要了解如何注册自定义帖子类型,以及如何在不使用插件的情况下注册自定义帖子类型的教程是一个不错的起点。
您还可以将以下代码复制到主题的 functions.php 文件以注册自定义帖子类型,您可以使用该类型测试如何从自定义帖子类型中删除评论:
/**
* 自定义帖子类型 - register_post_type()
* @description- Njengah 教程自定义帖子类型示例
* @link -https://gist.github.com/Njengah/839466b773085ac2430772e081357cee
*
*/
add_action('init', "njengah_tutorial_cpt");
函数 njengah_tutorial_cpt(){
$标签=数组(
'name' => _x('Tutorials', '帖子类型通用名称'),
'singular_name' => _x('Tutorial', 'post type 单数名称'),
'menu_name' => _x('Tutorials', 'admin menu'),
'name_admin_bar' => _x('Tutorial', 'add new on admin bar'),
'add_new' => _x('新增', ''),
'add_new_item' => __('添加新教程'),
'edit_item' => __('编辑教程'),
'new_item' => __('新教程'),
'all_items' => __('所有教程'),
'view_item' => __('查看教程'),
'search_items' => __('搜索教程'),
'not_found' => __('没有找到教程'),
'not_found_in_trash' => __('没有在垃圾箱中找到教程'),
'parent_item_colon' => __('家长教程:'),
);
$args = 数组(
'分层' => 真的,
'标签' => $标签,
'公共' => 真的,
'publicly_queryable' => 真,
'描述' => __('描述'),
'show_ui' => 真,
'show_in_menu' => 真,
'show_in_nav_menus' => 真,
'query_var' => 真,
'重写' => 真的,
'query_var' => 真,
'rewrite' => array('slug' => 'tutorial'),
'capability_type' => '页面',
'has_archive' => 真,
'menu_position' => 22,
“show_in_rest” => 真,
'supports' => array('title', 'editor', 'author', 'thumbnail', 'comments', 'revisions', 'page-attributes', 'custom-fields' )
);
register_post_type('tutorial', $args);
}如果您仔细查看该代码,则$args数组中有一条重要的行,其中包含键 - 'supports'这需要一个包含多个值的数组,这些值表示自定义帖子类型支持的功能,如图所示以下 :


当此评论值在该数组中时,它仅表示自定义帖子类型支持评论,并且它们将在自定义帖子编辑器中看到,如本特定教程自定义帖子类型所示:

您可以简单地从此自定义帖子类型注册代码中删除该“评论”,并且您将在没有评论支持的情况下注册自定义帖子类型。
如何从自定义帖子类型中删除评论
由于您可能无法控制其他插件或主题在您的网站上注册的所有自定义帖子类型,因此您可以使用 WordPress 提供的删除选项删除自定义帖子类型上的评论。
WP 功能:remove_post_type_support()
此选项采用函数的形式——remove_post_type_support(),它简单地删除了对某个自定义帖子类型的各种功能的支持。
该函数的一般代码表达式如下:
remove_post_type_support( string $post_type, string $feature )
如您所见,它有两个参数,它们都是字符串,参数如下:
| 范围 | 描述 |
| $post_type | 这是我们打算从中删除评论或我们要删除的自定义帖子类型支持的任何其他功能的自定义帖子类型。 |
| $功能 | 这是我们要删除的自定义帖子类型的功能。 例如,在这种情况下; 我们要删除“评论”功能。 |
要从自定义帖子类型中删除这些评论,我们现在可以编写一个挂钩“init”的操作挂钩,并在回调函数中运行 remove_post_type_support() 函数,我们将在其中传递相应的参数。
以下是可用于从名为“教程”的自定义帖子类型中删除评论的代码
/**
* 删除教程自定义帖子类型评论
*/
add_action('init', 'remove_custom_post_type_comments');
功能 remove_custom_post_type_comments() {
remove_post_type_support('教程', '评论');
}
此代码应添加到 functions.php 文件中,您将成功删除自定义帖子类型评论,如下图所示:

结论
当您想要隐藏自定义帖子类型评论时,您不必在注册自定义帖子类型时包括对评论的支持。
或者,如果您正在处理现有的自定义帖子类型并且想要从这些自定义帖子类型中删除评论; 您应该使用remove_post_type_support() function ,该函数还从自定义帖子类型中删除其他功能。
您还可以使用此方法从 WooCommerce 产品中删除评论,因为该产品是自定义帖子类型,并且评论等同于默认 WordPress 帖子中的评论。
