tips

コメント編集ページから親コメント(返信先)を指定できるようにする。

276_k

コメント編集ページに親コメントを設定できるメタボックスを設置する。

コメントの返信先が間違えている、コメントツリーがバラけて読みにくい、なんてことがある。どうでも良いことかもしれないが、私は気になる。要はコメント編集ページに親コメントID(コメントメタ内のcomment_parent)の入力欄を設置すれば良いのですが、それだけでは直感的に分かりにくいので、セレクトボックス化してアシストします。

sc 2014-12-05 23.30.06

 

 CODE: Create a dropdown list of comment_parent in a comment edit page.

作っては見たものの、やはりコメントスレッドが奇麗に並んでないことが気になるごく一部の人を除いて、必要のない機能ですね。レビューなどを活用されているCMSだと使えるかもしれません。
functions.phpに以下のコードを貼付けます。

function comment_parent_metabox(){
    add_meta_box( 'comment_parent', '親コメント', 'comment_parent_select', 'comment', 'normal', 'high' );
}
add_action( 'add_meta_boxes_comment', 'comment_parent_metabox' );
    
function comment_parent_select( $comment ){
    wp_nonce_field( 'comment_parent_update', 'comment_parent_update', false );
    $parent = $comment->comment_parent;
    $self_id = $comment->comment_ID;
    echo '<select id="comment_parent_select" name="comment_parent">'."n";
    $siblings = get_comments( 'post_id='.$comment->comment_post_ID );
    $selected ='';
    if($siblings): 
        if ( empty ( $parent ) ) : $selected = 'selected="selected"'; endif;
        echo '<option value="0" '.$selected.'>親コメントなし</option>'."n";
        foreach( $siblings as $sib ) :
            if ( $parent == $sib->comment_ID ) $selected = 'selected="selected"'; else $selected ='';
            if ( $sib->comment_ID != $self_id ) echo '<option id="comment-id-'.$sib->comment_ID.'" class="comment-parent" value="'.$sib->comment_ID.'" '.$selected.'>'.$sib->comment_author.' (id:'.$sib->comment_ID.' / '.$sib->comment_date.')【'.mb_substr( strip_tags($sib->comment_content), 0, 20). '...】</option>'."n";
        endforeach; 
    endif;
    echo '</select>'."n";
}
 
function comment_parent_edit( $comment_id ){
    if( !isset( $_POST['comment_parent_update'] ) || !wp_verify_nonce( $_POST['comment_parent_update'], 'comment_parent_update' ) ) return;
    if( isset( $_POST['comment_parent'] ) )
        update_comment_meta( $comment_id, 'comment_parent', esc_attr( $_POST['comment_parent'] ) );
}
add_action( 'edit_comment', 'comment_parent_edit' );

 

Your Comment

コードの記述は<pre>または<code>タグで括って下さい。自動的にエスケープされます。

 

右の文字を入力して下さい captcha