CMS関連
WordPressで記事のコメント一覧とトラックバック一覧を表示する方法
■突然ですが追記です
以下で長々と述べるコメントとトラックバックのセパレート方法ですが、「Trackping Separatorプラグイン」で何とかなるようです。
参考サイト (日々是好日さん)
コメント・トラックバックの別々表示方法パート2です。
ただしこの記事に関しては、「プラグイン検索をしてもあまりピンとこないし、時間もないからもう無理やり作ってしまえ!」という考えの元作ったため、利用価値はあまり無いかもしれません。
覚書ということで^^;
で、その無理やりな方法とは、
データベースから$wpdb->get_results使って取得する
です。
困った時のSQL作戦というわけです。
以下やり方
まずはコメント
<?php
$query = "SELECT * FROM wp_comments
WHERE comment_post_ID = '".get_the_ID()."'
AND comment_approved = '1'
AND comment_type = ''";
$get_comments = $wpdb->get_results($query, "ARRAY_A");
if(!empty($get_comments)):
foreach($get_comments as $comment_value):
?>
<div>
<p><?php echo $comment_value["comment_author"]; ?> | <a href="<?php echo $comment_value["comment_author_url"]; ?>">URL</a> | <?php echo $comment_value["comment_date"]; ?></p>
<p><?php echo $comment_value["comment_content"]; ?></p>
</div>
<?php
endforeach;
endif;
?>
データベースの構造についてはこちらをご参照ください。 参考サイト
■SQLの条件になっているフィールド名について
・comment_post_ID:記事のID。get_the_ID()で呼び出しましょう。
・comment_approved:「0」承認待ち、「1」承認済み、「spam」スパム
・comment_type:「trackback」トラックバック、「pingback」ピンバック、コメントは値なし(つまり空)
取得したデータは、「wp_comments」テーブルのフィールド名がキーとなって配列に格納されています。あとはforeachでループして、配列からデータを呼び出せば完成です。
■呼び出している配列のキーについて
・comment_author_url:コメント投稿者のURL
・comment_author:コメント投稿者名
・comment_date:コメント投稿日時
・comment_content:コメントの内容
これで
ダリ | URL | 2010-07-15 19:02:14
この記事については、ちょっと無理やりな方法でコメント取り出してます。使えなくても勘弁ね。
という風なコメント記事が一覧を表示できます。
つづいてトラックバック
<?php
$query = "SELECT * FROM wp_comments
WHERE comment_post_ID = '".get_the_ID()."'
AND comment_approved = '1'
AND comment_type = 'trackback'";
$get_comments = $wpdb->get_results($query, "ARRAY_A");
if(!empty($get_comments)):
foreach($get_comments as $comment_value):
?><div>
<p><a href="<?php echo $comment_value["comment_author_url"]; ?>"><?php echo $comment_value["comment_author"]; ?></a> | <?php echo $comment_value["comment_date"]; ?></p>
<p><?php echo $comment_value["comment_content"]; ?></p>
</div><?php
endforeach;
endif;
?>
コメントのときとほぼ同じです。
これで
ダリの雑記 | 2010-07-15 19:02:14
コメントとトラックバック...この記事については、ちょっと無理やりな方法でトラックバックを取り出してます。使えなくても勘弁ね。
という風なトラックバック記事が一覧表示がされます。
とりあえずはこちらで何とか機能しますが、たぶん調べてみればもっと便利なプラグインが存在するでしょうから、そちらをご利用になることをお勧めします。
nandani | 2010年07月18日 | コメント(1) | トラックバック(0) | CMS関連 | PHP関連
WordPressでコメント数とトラックバック数を表示する方法
WordPressはPHPで好きに改造できるので気に入ってるんですが、標準の設定が「なぜこんな設定なんだ?」と不思議になることがよくあります。
その代表的なものに
コメント・トラックバックが一緒くたになっている。
便利なこともあるんでしょうが、自分はこれまでデフォルトで使用したことがありません。
今回とある案件でブログを設置していたのですが、記事の内容の下に
Comment(3) | Trackback(2)
という記述をしなければならなくなりました。まあブログではよく目にする記述ですね。要するにその記事に何件コメント・トラックバックがあるかというものです。
さて、コメントの数を取得する関数はwordpressでもデフォルトでありますが、その関数
comments_number() 参考サイト
では、先にも記述したように「コメント」と「トラックバック」が一緒くたになっているため、この関数で取得する数値は「コメント数+トラックバック数+ピンバック数」になってしまいます。
なんでこんな仕様やねん!
引数で別々に取得できるのかな~と思って調べるも、そんなものは無く、どうすっかな~と思い調べてみると、やはり大量に出てきました。
Trackping Separatorプラグイン
今回は「MAKIZOU.COM」さんのサイトを参考に設置いたしました。
「Trackping Separatorプラグイン」のダウンロードサイトはこちら
プラグインをダウンロード後、解凍してフォルダごと「wp-content/plugins/」へアップロード。
wordpressの「プラグイン」設定で「有効化」すれば、このプラグインを使用できるようになります。
テンプレートの記述方法は
Comment(<?php comments_popup_link('0', '1', '%'); ?>) |
Trackback(<?php echo trackpings('count','trackback'); ?>)
※上記の記述ではリンクが考慮されていなかったので修正しました。
<?php comments_popup_link('Comment(0)', 'Comment(1)', 'Comment(%)'); ?> |
<a href="<?php the_permalink() ?>#trackbacks" >Trackback(<?php echo trackpings('count'); ?>)</a>
でOK!
簡単ですね。
■追記
今日気づいたんですが、「comments_popup_link()」はプラグインの関数ではなくデフォルトで存在する関数のようです。(参考サイト)
上記の記述どおり、コメント数つきのリンクを生成できます。
しかし、トラックバックについての関数はやはりデフォルトでは存在しないので、このプラグインを使用する必要があります。
nandani | 2010年07月18日 | コメント(2) | トラックバック(2) | CMS関連
wordpressでよく使用するウィジェットを関数で代用する方法
wordpressのウィジェットは簡単に要素を追加・削除できるので便利なんですが、スタイルシートによってはウィジェットでは対応できない場合があります(要素間にタグを入れたいなど)
そこでよく使用するウィジェットをwordpressのテンプレートタグで代用して使用する方法を記述します。
1.最近の投稿
例1)wp_get_archives関数による方法。
wp_get_archives('type=postbypost&limit=10&format=html'); 参考サイト
・typeは「最近の投稿」の場合は、「postbypost」にしてください。
・limitの数字で件数を指定できます。
・formatの設定によってリスト表示やプルダウン表示になります。
例2)get_posts関数にてデータベースから引っ張ってくる方法。
少し長くなりますが、細かくHTMLタグを設定できます。
<?php $myposts = get_posts('numberposts=10&orderby=post_date');
foreach($myposts as $post) : ?><p><?php echo date("Y年m月d日", strtotime($post->post_date)); ?> :
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p><?php endforeach; ?>
・get_posts():データベースからデータを取得する関数。
numberpostsで件数を取得、orderbyで並び順を指定できます。
・$post->post_date:投稿日時を取得
・the_permalink():記事へのリンクを取得
・the_title():記事タイトルを取得
2.カレンダー
get_calendar(); 参考サイト
3.カテゴリー
wp_list_categories(); 参考サイト
※デフォルトでは、「カテゴリー」という余計なタイトルが表示されるので注意しましょう。解決方法
こういう方法もあります→wordpressでカテゴリー一覧を表示する方法2
4.月別アーカイブ
limitで表示件数を指定できます。
wp_get_archives('type=monthly&limit=12&format=html'); 参考サイト
・typeは「月別アーカイブ」の場合は、「monthly」にしてください。
・limitの数字で件数を指定できます。
・formatの設定によってリスト表示やプルダウン表示になります。
※wp_get_archivesは「type」によって、最新の投稿や月別アーカイブに切り替えられます。
各関数のさらに細かい引数設定については、それぞれの「参考サイト」を参照してください。
nandani | 2010年07月18日 | コメント(0) | トラックバック(0) | CMS関連
wordpressでカテゴリー一覧を表示する方法
ウィジェットを使用せずに、カテゴリ一覧を表示させたい場合は
wp_list_categories()
を使用します。
例)
<ul>
<?php wp_list_categories(); ?>
</ul>
しかしデフォルトで使用すると、
・カテゴリー
・アニメ
・プログラム
・HTML
という風に、なぜか「カテゴリー」という文字が先頭に来てしまいます。
(「アニメ」「プログラム」「HTML」はそれぞれトップレベルカテゴリです。)
この「カテゴリー」という文字、非常に邪魔!
これを消すには、引数に「title_li=」を渡します。
例)
<ul>
<?php wp_list_categories('title_li='); ?>
</ul>
これで
・アニメ
・プログラム
・HTML
という風に表示されます。
要はカテゴリのタイトルを「何も設定しない」ようにするわけですね。
nandani | 2010年07月18日 | コメント(0) | トラックバック(0) | CMS関連
WordPressで日付を表示する際の注意事項
WordPressで日付を表示する際、よく「the_date()」を使用しますが、この関数には問題点があります。
それはアーカイブなどで記事を表示する際、同じ日の投稿が複数あると1つめの記事だけその日付を表示して以後は表示されなくなるということです。
そういう時は、the_date()ではなく、get_the_date()を使用しましょう。
echo get_the_time('Y')."年".get_the_time('m')."月".get_the_time('d')."日";
get_the_timeを使用する場合は、echoやprintをつけるのを忘れずに。
nandani | 2010年07月18日 | コメント(0) | トラックバック(0) | CMS関連 | PHP関連