问题描述

默认情况下,我想关闭评论页面和自定义 post-types

最初,我只是在评论显示功能中使用条件来避免在这些页面上显示该块,但是我需要用户才能根据需要重新启动注释。

最佳解决方案

根据我的理解,您希望设置页面和一些自定义帖子类型,以便在默认情况下具有注释’off’,而帖子仍将使用默认选项 (即注释’on’) 。如果是这种情况,以下功能将会这样做。

function default_comments_off( $data ) {
    if( $data['post_type'] == 'page' && $data['post_status'] == 'auto-draft' ) {
        $data['comment_status'] = 0;
    }

    return $data;
}
add_filter( 'wp_insert_post_data', 'default_comments_off' );

次佳解决方案

当您创建新的帖子 (自定义类型或常规) 时,WordPress 会调用 get_default_post_to_edit,然后设置新帖子将具有的默认值。

此功能提供了一些过滤器钩子来更改默认标题,内容和摘录,但不幸的是没有其他的,但是每个过滤器都将完整的 $post 对象传递给回调,基本上这意味着可以重新定义几个属性 (或仅一个如果我们喜欢)

这应该适用于您,只需将代码应用于应用的帖子类型添加到开关中的情况 (电影和页面是示例)..

function my_default_content( $post_content, $post ) {
    if( $post->post_type )
    switch( $post->post_type ) {
        case 'page':
        case 'movie':
            $post->comment_status = 'closed';
        break;
    }
    return $post_content;
}
add_filter( 'default_content', 'my_default_content', 10, 2 );

代码已经在 WP 3.0.1 上进行了测试,并具有特定的禁用注释类型的意图,同时让其他人从 default_comment_status 选项继承默认状态。

希望有帮助…. 🙂

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。