nishikatsuさん、こんにちは。
コメントへの項目追加ですが、3.0からcommentmetaというデータベーステーブルが追加されており、ユーザーレベルでの項目追加が可能になっています。
具体的な方法については、WordPants 第2号の靴下でWebnistさんが寄稿されていますから、そちらを参照してください。
尤もすでにcomment_author_urlへのデータ格納がうまくいっているのであれば、そのままでも良いかと思います。
データの取得と表示については、
get_comments( array('post_id' => $post->ID, 'status' => 'approve', 'order' => 'ASC') );
で全コメントを取得
- foreach でループ
- comment_author_url利用の場合は、オブジェクトのcomment_author_urlを参照し加算。commentmeta利用の場合は、get_comment_meta関数を使って得られたデータを加算
となります。
ざっくりなサンプルコードとしては、
$comments = get_comments( array('post_id' => $post->ID, 'status' => 'approve', 'order' => 'ASC') );
if ( ! empty( $comments ) ) {
$regisum = 0;
foreach ( $comments as $comment ) {
$regisum += (int)preg_replace( '/[\D]/', '', $comment->comment_author_url );
}
echo $regisum;
}
こんな感じになるはずです。
jim912さん、こんにちは。
サンプルコードをありがとうございます。
早速組み込み、無事に comment_author_url に代入した数字の合計を取得できました。
サンプルコードを調べ、どこで何をして結果が出ているのか理解したいと思います。
合わせて、3.0から追加されたというcommentmetaについても調べてみます。
この度はありがとうございました。
(@nishikatsu)
12年、 3ヶ月前
はじめまして。
HTMLとCSSが少し使える程度で、PHPとMySQLは初心者で、コードを切り貼りしながら格闘しています。
そこでご教授いただきたいのは、コメント欄に追加項目を1つ設ける方法です。
フォーラムでいろいろ調べてみるとコメントに追加項目を設けることは、データベース構造が変わってしまうことになり、アップデートで支障が出る可能性があるということでした。
そこで使用することがない URL 欄を擬似的に追加項目にしようと思っています。
分かったは以下の3つです。
1. URLはテーブル名wp_commentsのフィールドcomment_author_urlに入っている。
2. comment_author_url には、すでにhttp://付きで入っている。
3. http://はコメント登校時にesc_urlの処理で自動的に追加されてしまう。
実現しようとしていることは、評価表示のためにURLに数字を入れて全コメントで合計を出すということです。
例えばコメントで0~5を入れてもらって合計し、コメント数で割ることで、記事の評価が出せると考えています。
ただし、Wordpressの本体自体にはアップデートのことがあるため触りたくありません。
そこでデータを取り出すときに http:// を削除して数字だけを合計しようと考えました。
しかし、テストで書いたのは以下のようなコードですが、正常に動いていません。
<?php
<!– 全コメントのcomment_author_urlを配列$reginumに入れる –>
$reginum = $wpdb->get_results(“SELECT * FROM $wpdb->comment_author_url”);
<!– $regisumに、$reginumからhttp://を除いて数字1つを取り出し合計する –>
$regisum = array_sum(mb_substr($reginum,7,1,”UTF-8″));
echo $regisum;
?>
まちがいを指摘してもらえたら助かります。
もしかすると、もっと簡単な方法があったりするのでしょうか?