サポート » 使い方全般 » comment_author_url を擬似追加項目にする方法

  • 解決済 nishikatsu

    (@nishikatsu)


    はじめまして。

    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;
    ?>

    まちがいを指摘してもらえたら助かります。

    もしかすると、もっと簡単な方法があったりするのでしょうか?

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    nishikatsuさん、こんにちは。

    コメントへの項目追加ですが、3.0からcommentmetaというデータベーステーブルが追加されており、ユーザーレベルでの項目追加が可能になっています。
    具体的な方法については、WordPants 第2号の靴下でWebnistさんが寄稿されていますから、そちらを参照してください。

    尤もすでにcomment_author_urlへのデータ格納がうまくいっているのであれば、そのままでも良いかと思います。

    データの取得と表示については、

    1. get_comments( array('post_id' => $post->ID, 'status' => 'approve', 'order' => 'ASC') ); で全コメントを取得
    2. foreach でループ
    3. 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についても調べてみます。

    この度はありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「comment_author_url を擬似追加項目にする方法」には新たに返信することはできません。