我应该挂接什么才能向评论中添加额外的字段?

时间:2019-09-18 作者:Matthew Brown aka Lord Matt

如何在注释表单中添加字段,然后在注释中显示数据?E、 g.注释的页眉/页脚。是否需要定制模板?

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

首先,您必须将输入字段添加到注释表单中。您可以使用这两个挂钩:comment_form_logged_in_after
  • comment_form_after_fields
  • 以下是操作方法:

    function add_my_custom_field_to_comment_form() {
        ?>
        <p class="comment-form-<FIELD_ID>">
                <label for="<FIELD_ID>"><?php _e( \'Your <SOMETHING>\', \'<TEXTDOMAIN>\' ); ?><span class="required">*</span>:</label>
    
                <input id="<FIELD_ID>" name="<FIELD_ID>" value="" placeholder="" />
            </p>
        <?php
    }
    add_action( \'comment_form_logged_in_after\', \'add_my_custom_field_to_comment_form\' );
    add_action( \'comment_form_after_fields\', \'add_my_custom_field_to_comment_form\' );
    
    然后你必须使用comment_post 钩子,保存此值:

    function save_my_custom_field_for_comment( $comment_id ) {
        $value = $_POST[ \'<FIELD_ID>\' ];
        // sanitize the $value
        add_comment_meta( $comment_id, \'<FIELD_ID>\', $value );
    }
    add_action( \'comment_post\', \'save_my_custom_field_for_comment\' );
    
    然后要在注释中显示此值。。。您可以:
    • 修改注释回调函数,使其也打印此值,
    • 使用comment_text` 钩子将此值附加到内容

    function append_my_custom_field_to_comment_content( $comment_text, $comment ) {
        $comment_text = get_comment_meta( $comment->comment_ID, \'<FIELD_ID>\', true );
        return $comment_text;
    }
    add_filter( \'comment_text\', \'append_my_custom_field_to_comment_content\', 10, 2 );