WordPressで記事ごとに一意のコメント番号をわりふる方法(一意の連番)

wordpressで記事ごとに一意のコメント番号をわりふって連番にする方法を紹介します。

ただしこれは一例としてとらえておいてください。

スポンサーリンク

wordpressのコメントid

wordpressのコメントには一意のコメントidが割り振られますが、これはwordpress全体の一意のコメントidであり、記事ごとにコメントに連番をわりふりたい場合は、別のフィールドが必要になります。フィールドとはデータベーステーブルのフィールドということになります。

スポンサーリンク

wordpressで記事ごとに一意のコメント番号をわりふって連番にする方法

記事ごとに一意のコメント番号は「comment_number」でこれは「comment_id」に紐づいています。具体的には「commentmetaテーブル」に新たにフィールドを追加します。

とりあえずコードはこれになります↓これはfunctions.phpに記述しています。

function update_comment_number($comment_id) {
    global $wpdb;

    $post_id = $wpdb->get_var("SELECT comment_post_ID FROM $wpdb->comments WHERE comment_ID = " . $comment_id . " LIMIT 1;");

    $last_comment_number = $wpdb->get_var($wpdb->prepare("SELECT meta_value FROM $wpdb->commentmeta 
        LEFT JOIN $wpdb->comments ON $wpdb->commentmeta.comment_id = $wpdb->comments.comment_ID 
        WHERE $wpdb->comments.comment_post_ID = %d AND $wpdb->commentmeta.meta_key = 'comment_number' 
        ORDER BY (CAST($wpdb->commentmeta.meta_value AS SIGNED)) DESC LIMIT 1", $post_id));

    if ($last_comment_number) {
        $count = $last_comment_number + 1;
    } else {
        $count = 1;
    }

    update_comment_meta($comment_id, 'comment_number', $count);
}
add_action('wp_insert_comment', 'update_comment_number');

まあ… ちょっとコードを解説すると長くなるんで省略します。

ちなみにこちらのコードはデータベースに番号を保存されるので途中のコメントを削除した場合、その一意の番号のコメントはなくなります。なにがいいたいかというとただ単に連番にしているわけではないということです。たとえばページにアクセスするたびにコメントリストに連番を割り振るようなものではないということです。コメントを投稿した時点でその記事に対する一意のコメント番号をデータベースに保存します。

さらに詳しく書くとデータベースのcommentmetaというテーブルに保存されます。

以下のようにmetakeyがcomment_number。metavalueは記事ごとの一意のコメント番号です↓

まとめ

出力方法に関しては今回は解説しませんが、一応記事ごとのコメントに番号を割り振ることができました。これをどう活用するかはあなた次第です。

あと言い忘れましたが、こちらは新に投稿されるコメントでしか有効になりません。いままでに投稿しているコメントにも連番を割り振りたい場合はさらなるコードが必要になりますので注意してください。

コメント

タイトルとURLをコピーしました