4月 012011

ウィジェットは便利ですが、カスタマイズすることは出来ませんので、細かいカスタマイズがしたい場合は、自らphpファイルを編集しなければなりません。

<?php
$comments = get_comments(array(‘status’ => ‘approve’ ,’number’ => 5));
foreach($comments as $comment):
$post = get_post($comment->comment_post_ID);
?>
<li>
    <a href=”<?php the_permalink(); ?>”>
        <?php the_title(); ?>
    </a>
    <br />へのコメント
    (<?php comment_author_link(); ?>より[<?php comment_date('m/d'); ?>])
    <?php comment_text(); ?>
</li>
<?php endforeach; ?>

自分用のメモです。

$comments = get_comments(array(‘status’ => ‘approve’ ,’number’ => 5));

get_comments関数を使ってデータと取り出す。

取り出せるデータは

  • status(コメント属性別)
    • approve(承認済み)
    • hold(承認待ち)
    • spam(スパム)
  • number
    • コメントを表示させたい数を入れる
  • order(表示順)
    • DESC(デフォルト:新しい方が上)
    • ASC(古い順)

orderのASCは使わないことが多いと思うので、だいたいは上の形で事足りるはず。

もし古い順に並べるなら、

$comments = get_comments(array(‘status’ => ‘approve’ ,’number’ => 5 ,’order’ => ‘ASC’));

とすればOK

次に、コメント先のタイトル名を取り出す処理をします。

the_title();を使うんですが、なにも処理せずにコレを使うと、そのページのタイトルを呼び出してしまいます。それでは都合が悪いので、このような処理をしています。

$comments = get_comments(array(‘status’ => ‘approve’ ,’number’ => 5));
foreach($comments as $comment):
$post = get_post($comment->comment_post_ID);

get_comments関数で取り出したデータをforeachを使ってコメントが一つ一つ表示できるようループ処理を行い、get_post($comment->comment_post_ID)の部分でコメントデータを$postに代入します。

そうすることでthe_title();を使っても、そのページのタイトルではなく、コメントのタイトルが表示されるようになります。

(<?php comment_author_link(); ?>より[<?php comment_date('m/d'); ?>])
<?php comment_text(); ?>

  • comment_author_link(); (コメントしたユーザの名前)
  • comment_date(‘m/d’);  (コメント日)
  • comment_text(); (コメント内容)

表示部分は<li>で囲っていますが、どの部分でなにを表示しているのかがわかれば、スタイルシートなどを編集して、オリジナリティある表示にすることができると思います。


関連記事

Trackback URL

管理者承認後に公開されます。リンクと感想は必須でお願いします

Posted by admin
  • 匿名

    はじめまして。
    この記事いろいろと参考になりました。ありがとうございます。
    ひとつ教えていただきたいのですが、comment_text()で表示されるコメントの文字数を『最初の10文字のみ表示させる』というようなことは、簡単に出来るのでしょうか?
    少し調べていたのですが、どうも上手く行きませんでした。
    教えていただけると大変助かります。

QLOOKアクセス解析