###前提・実現したいこと
「指定タームの投稿にされたコメント」について、そのメタキーを取得し、ランキングを作りたいと考えています。
最終的な出力箇所には
php
1$tarms = array( ‘sweet, sour’ ); 2echo get_count_ranking( $tarms );
と書いて処理できれば理想的です。
###発生している問題
それぞれの関数で何が取得されてどう利用できるのかいまいち掴めておらず、var_dumpで追いかければいい話ですが自分にはまさにそれこそが難しく、下記のソースコードで実現できない状態です。
###該当のソースコード
WordPressのpage-front.phpに以下のコードを追記しました。
おおまかな流れの目的として次の3つのコメントアウトがあるように、
1: 引数($tarms)で指定するslugの投稿を取得
2: 1のコメントを取得
3: 2のmeta_key(count)を取得し、多い順にユーザーを返す
というイメージです。
※meta_keyの「count」は、データベース「wp_commentmeta」に格納されているキーです。
php
1function get_count_ranking( $tarms ){ 2 // 1: 引数($tarms)で指定するslugの投稿を取得 3 $customPostArg = array( 4 'posts_per_page' => 5, 5 'post_type' => 'fluits', 6 'tax_query' => array( 7 array( 8 'taxonomy' => 'taste-tag', 9 'field' => 'slug', 10 'terms' => $tarms 11 ) 12 ) 13 ); 14 $array_with_post_ids = get_posts($customPostArg); 15 16 // 2: 1のコメントを取得 17 $args = array( 18 'post__in' => $array_with_post_ids 19 ); 20 $comments = get_comments( $args ); 21 22 // 3: 2のmeta_key(count)を取得し、多い順にユーザーを返す 23 $result = ''; 24 $needed_data_array = array(); 25 foreach ($comments as $key => $comment) { 26 $ranking = get_comment_meta($comment->ID, 'count', $return_single_value = true); 27 $author_id = $comment->user_id; 28 if($author_id) { 29 $needed_data_array[$author_id][] = $ranking; 30 $result .= '<li>'.$author_id.'</li>'; 31 } 32 } 33 return $result; 34} 35
var_dumpすると「この関数が目的通りにいってない」とはなるのですが、「でもどうしたらいいのか」という状態です。
そんな中ですが、ひとまず実現したいことの意図が伝わればと思い、現状のソースコードとして上記を掲載させて頂きました。
間違った点や改善すべき点など多々あるかと存じますが、正しい書き方についてご教授願えましたら幸いです。どうぞ宜しくお願い申し上げます。
回答1件
あなたの回答
tips
プレビュー