编辑注释的自定义字段

时间:2012-05-26 作者:AlxVallejo

我需要帮助了解为什么edit\\u comment挂钩中的save函数不起作用。

下面是“comment\\u post”挂钩的代码:

add_action( \'comment_post\', \'save_comment_meta_data\' );
function save_comment_meta_data( $comment_id ) {
    if ( ( isset( $_POST[\'private\'] ) ) && ( $_POST[\'private\'] != \'\') )
    $private = wp_filter_nohtml_kses($_POST[\'private\']);
    add_comment_meta( $comment_id, \'private\', $private );
}
下面是“edit\\u comment”挂钩:

add_action( \'edit_comment\', \'extend_comment_edit_metafields\' );
function extend_comment_edit_metafields( $comment_id ) {
    if( ! isset( $_POST[\'extend_comment_update\'] ) || ! wp_verify_nonce( $_POST[\'extend_comment_update\'], \'extend_comment_update\' ) ) return;
        if ( ( isset( $_POST[\'private\'] ) ) && ( $_POST[\'private\'] != \'\') ) :
        $private = wp_filter_nohtml_kses($_POST[\'private\']);
        update_comment_meta( $comment_id, \'private\', $private );
        else :
        delete_comment_meta( $comment_id, \'private\', $private );
        endif;
}
这会在编辑窗口中添加一个复选框,使注释成为私有的。

当我在编辑窗口中更新注释时,复选框会出现,但不会保存。知道为什么吗?

1 个回复
SO网友:Chip Bennett

我想你已经克服了复杂的事情。假设private 是一个复选框,只需检查它是否已设置,并相应地进行操作。带窗体$_POST 数据,如果选中复选框,复选框将发送其值,如果未选中复选框,复选框将不发送任何内容:

if ( isset( $_POST[\'private\'] ) ) {
    update_comment_meta( $comment_id, \'private\', \'private\' );
} else {
    delete_comment_meta( $comment_id, \'private\', \'private\' );
}
请注意,由于复选框是二进制的(选中/未选中),因此可以将值硬编码到update_comment_meta() 调用,从而内在地清理用户输入。

结束

相关推荐

是否在GET_COMMENTS中显示COMMENT_DATE?

是否有任何方法可以更改日期的显示方式以及get\\u注释。。?我有以下几点。。 <?php $comments = get_comments( array( \'post_id\' => $post->ID, \'number\' => 4, \'status\' => \'approve\' ) ); foreach($comment