コメントのみ取得する関数

WordPressでコメントのみを取得する関数を作成してみました。

function get_only_comments( $args = '' ) {
	global $wpdb;

	$defaults = array('limit' => 10, 'post_id' => 0, 'order' => 'DESC', 'approved' => 1);
	$args = wp_parse_args($args, $defaults);

	if($args['limit'] <= 0 || $args['limit'] > 1000) {
		$limit = 1000;
	} else {
		$limit = $args['limit'];
	}

	$postid_sql = "";
	if($args['post_id'] > 0) {
		$postid_sql = " AND comment_post_ID=" . $args['post_id'];
	}

	if($args['order'] != "DESC" && $args['order'] != "ASC") {
		$order = "DESC";
	} else {
		$order = $args['order'];
	}

	$approved_sql = "";
	if($args['approved'] == 1) {
		$approved_sql = " AND comment_approved=1";
	}

	$comments = $wpdb->get_results("SELECT comment_approved, comment_author, comment_author_url, comment_ID, comment_post_ID, comment_content, comment_date FROM $wpdb->comments WHERE comment_type=''$postid_sql$approved_sql ORDER BY comment_date $order LIMIT $limit");

	return $comments;
}

functions.phpなんかに入れてやればどこからでも使えます。

引数

引数を複数指定する場合は「&」で繋ぎます。

limit
取得するコメントの数を指定(0を指定した場合は最大で1000コメントを取得)
デフォルトは10
post_id
取得するコメントの記事id(0を指定した場合は全てのコメントを取得)
デフォルトは0
order
日付でのコメント並び順(ASC / DESC)
デフォルトはDESC(降順)
approved
承認されているコメントのみ取得(1 / 0)
デフォルトは1(承認済みのみ取得)

取得するデータ

各コメントデータが配列で取得できます。

  • comment_approved : 未承認=0, 承認された=1
  • comment_author : コメント作成者の名前
  • comment_author_url : コメント作成者のURL
  • comment_ID : コメントID
  • comment_post_ID : コメントが投稿された記事ID
  • comment_content : コメント本文
  • comment_date : コメントされた日付

使用例

/*
 コメントデータ取得について
*/

// 承認済みのコメントで最新10件を取得
$comment_array = get_only_comments();

// 記事IDを指定
$comment_array = get_only_comments('post_id=' . $post->ID);

// 取得するコメント数を指定
$comment_array = get_only_comments('limit=5');

// 記事ID=100のコメントを日付の昇順で全て取得(未承認も含む)
$comment_array = get_only_comments('limit=0&post_id=100&order=ASC&approved=0');


/*
 取得したデータの活用についての例
*/

// コメント数の表示
echo count($comment_array);

// 配列のループ
foreach($comment_array as $comment) :
	// コメントが承認されているかの確認
	if($comment->comment_approved == 1) :

		// コメントが投稿された記事のタイトルを表示
		echo get_the_title($comment->comment_post_ID);

		// 記事のリンク先を表示
		echo get_permalink($comment->comment_post_ID);

		// コメント本文を30文字まで表示
		echo mb_substr($comment->comment_content, 0, 30);

		// コメント本文を改行を付けて表示
		echo nl2br($comment->comment_content);

	endif;
endforeach;

「プラグインを導入するまでもない」と思っている方や「データの出力を細かく自分で制御したい」方には有用かと思ったので載せておきます。SQLが分かる方であれば関数のSQL文を変更して色々自分好みのデータが取得できます。

ちなみにトラックバックのみを取得したい場合は関数内の「WHERE comment_type=”」を「WHERE comment_type!=”」にすれば良いはず!

コメントのみ取得する関数 本文ここまで
「WordPressでコメントのみを取得する関数を作成しました。取得するデータはデータベースから直接取ってあるので、自由に加工、表示ができます。」とつぶやいてる私の為に、クリックしてー!
ブログセンター  人気ブログランキングへ  ブログランキング・にほんブログ村へ  blogram投票ボタン
投稿タグ
境界線
コメントフォーム

コメント

コメントフォーム
※管理人にのみ公開されます

  • DC5さん さんより: [2009-01-15 21:32:46]

    す、す、す、すごいですね。
    何がなんなのかさっぱりわかりません。
    さすが本部長!!
    これだけのアイテーの技能があるのなら、顔写真を何十回も撮り直さなくても整形一発のような気がするのですが(?)

  • ティコ さんより: [2009-01-15 21:52:36]

    >DC5さん
    いえいえ、それ程の者です。

    嘘です。基本的に余所様で書かれている事を参考に自分なりにパクってるだけです。←ダメ人間

    ですから私の整形技術は推して知るべし。
    カメラの技術を上げた方が早いか、と。

  • SonyaSunny さんより: [2009-09-02 19:25:16]

    Hello,
    Can i get a one small photo from your blog?
    Thanks
    SonyaSunny

  • ティコ さんより: [2009-09-03 18:12:21]

    >To SonyaSunny
    Of course!
    You may freely use it !!

  • このコメントは、現在管理人の承認待ちです。

コンテンツ内容 ここまで
広島、晴れのち晴れ