Wordpress创建自定义注释类型

时间:2015-11-28 03:58:58

标签: wordpress comments

当我需要多个comment_template时,我有一个页面,所以我希望我的每个comment_template都有不同的类型,所以我在那些2中看到了不同的注释。

我的get_comments看起来像这样

  $args = array(
            'post_id' => get_the_ID(),
            'orderby' => 'comment_date',
            'order' => 'ASC',
            'type' => 'tips'
  );
  $comments = get_comments($args);

问题是当我发表评论时,我没有找到如何将此帖子类型分配给评论,所以我无法用get_comments()

显示它们

我试图像这样添加我的评论表单,但仍然无法正常工作

$comment_args = array( 
        'type' => 'tips'
    );
    comment_form($comment_args);

1 个答案:

答案 0 :(得分:0)

保存自定义评论类型有几个步骤,顺便说一句,WordPress在技术上不像自定义帖子类型那样支持它。

A。 WordPress有3种注释类型:ping,引用和常规注释为空白。

B。使用WP的前提,允许空白字段关联“普通评论”,我们现在可以使用所需的任何名称插入新的CCT。

C。您必须在函数中使用comment_form_defaults来在注释表单之外定义一个数组并将其作为参数传递。 (否则,您可以直接在标注上更改comment_form($args)中的$参数。)

add_filter('comment_form_defaults', 'wpse33967503_defaults_comments_positive');    
function wpse33967503_defaults_comments_positive($default)
{    
    global $comment_id;
    $actnonce = 'action_tips'; 
    $action = empty( $_REQUEST['action_tips'] ) 
           ? false : $_REQUEST['action_tips'];
    if ($_SERVER['REQUEST_METHOD'] == 'POST' && $action != false ) 
    {  
        if( isset(  $_POST['custom_tips'] ) ){ 
        $ctype    = $_POST['custom_tips'];

    $default['fields']['comment_type'] = '<p class="comment-form-tips '. $ctype .'">
    <input type="hidden" name="action_tips" value="'. $actnonce .'" 
    id="action_tips" />
    <input type="hidden" name="comment_type" value="'. $ctype .'" 
    id="comment_type" /></p>';
        }
    }     
    return $default;       
}

D。现在,我们可以将此输入注入评论表单,但是验证始终是一件好事。

add_filter( 'preprocess_comment', 'wpse33967503_preprocess_comment_handler', 12, 1 );
function wpse33967503_preprocess_comment_handler( $commentdata ) 
{     
    if( ( isset( $_POST['comment_type'] ) ) && ( $_POST['comment_type'] != '') ) { 
    $commentdata['comment_type'] = wp_filter_nohtml_kses( $_POST['comment_type'] );
    }
        return $commentdata;    
} 

可以随意添加消息,甚至可以进行管理员验证...我只是检查它是否已发布。

您的CCT现在是注释数据的一部分(不是comment_meta)。这是WP继承的常规注释数据参数。

这是wp_comments表中的默认注释数据集。从技术上讲,您可以自定义其中的任何一种。

comment_ID: ID for the comment
comment_post_ID: The post for which the comment is posted
comment_author: Comment author name
comment_author_email: Author name for the comment
comment_author_url: Author url
comment_author_IP: Author IP address
comment_date: Comment Date
comment_date_gmt: GMT time of the comment
comment_content: Contents of the comment (comment body)
comment_karma: Is there default karma calculation? Maybe rating?
comment_approved: Flag for the comment status.
comment_agent: 
comment_type: functionality can be used like custom post type
comment_parent: For threaded comment
user_id: user id if comment author is a registered user of the site.