Title: acfで作った投稿型5段階評の平均得点をもとに記事のランキングを作りたい。
Last modified: 2016年12月19日

---

# acfで作った投稿型5段階評の平均得点をもとに記事のランキングを作りたい。

 *  解決済 [d.w.c](https://ja.wordpress.org/support/users/dwc-1/)
 * (@dwc-1)
 * [9年、 9ヶ月前](https://ja.wordpress.org/support/topic/acf%e3%81%a7%e4%bd%9c%e3%81%a3%e3%81%9f%e6%8a%95%e7%a8%bf%e5%9e%8b5%e6%ae%b5%e9%9a%8e%e8%a9%95%e3%81%ae%e5%b9%b3%e5%9d%87%e5%be%97%e7%82%b9%e3%82%92%e3%82%82%e3%81%a8%e3%81%ab%e8%a8%98%e4%ba%8b/)
 * プラグインを使用して記事のランキング機能を付けていたのですが、テーマとの相性が
   悪くて使えないことが判明したので、ACFを使用して評価＆ランキング機能を作りたい
   と思っています。
 * 状況：
    記事ページに対し、ＩＤで関連付けたランキング用のカスタム投稿をログイン
   した閲覧者が5段階評価を付けてACFの機能で投稿できるようにしています。 投稿から
   5日経過した5段階評価の数字を集計し、投稿人数で割ったものを平均取得星数として各
   記事に表示するところまでできました。 集計用のコードは下記で、記載場所は被評価
   記事のサイドバーです。
 *     ```
       <?php
       date_default_timezone_set('Asia/Tokyo');
       $star_post_criterion = date('Y/m/d H:i:s', strtotime('-5 day'));//公開基準日。現在の日付より5日分遡る
   
       $post_id = get_the_ID();               //被評価記事のID取得
       $args = array(
       	'numberposts' => '-1',
       	'post_type' => 'star-rate' ,   //投稿タイプの指定
       	'post_status' => 'all',        //すべての投稿タイプ
       	'meta_query' => array(
       		array(
       		'key' => 'star-house-id',
       		'value' => $post_id,   //IDで紐づけしたのを引っ張る
       		),
       		array(
       		'key' => 'star-time-stamp',      //評価投稿時のタイムスタンプ
       		'value' => $star_post_criterion, //基準日と比較
       		'compare' => '<=',               //基準日以前のもの
       		)
       	),
       	'tax_query' => array(          //スパム認定されたものは収集せず
       		array(
       		'taxonomy' => 'remove-rate',
       		'field' => 'term_id',
       		'terms' => '258',
       		'operator' => 'NOT IN',
       		)
       	)
       	);
       $customPosts = get_posts($args);
   
       $star = '';                        //reset
       $sum_star = '';
       $people = '';
   
       if($customPosts) :
       	foreach($customPosts as $post) : 
   
       $star[] = get_field('star-rate');  //カスタムフィールドを取得
       $people++;                         //回転数をカウント
   
       	endforeach;
   
       if($star): $sum_star = array_sum($star); endif;
         $ave_star = round($sum_star/$people,1);
   
         /*変数の内容*/
         // $sum_star   獲得総星数
         // $people     投票総人数
         // $ave_star   平均星数（小数点第1位までで四捨五入）
   
       echo '平均星数：';
       echo $ave_star ;
   
       endif;
       wp_reset_postdata(); /*クエリのリセット*/ 
       ?>
       ```
   
 * この平均星数を自動で被評価記事のカスタムフィールドに飛ばし、その値を比較してフロント
   ページ等でget_postsを使用して上位3つの記事ランキングを作成できないかと考えてい
   ます。
    ただ、被評価記事のカスタムフィールドに取得数の数値を自動で記録する方法
   がわかりません。
 * 評価をacfで投稿するときに被評価記事のID等をカスタムフィールドに自動挿入する仕組み
   を応用して
 *     ```
       <script type="text/javascript">
       jQuery(document).ready(function($){
       	var set_value = function(input_id, input_val) {
       		$('#' + input_id).val(input_val);
       	}
       set_value('カスタムフィールドのID', "<?php echo $ave_star; ?>");
       });
       </script>
       ```
   
 * のようにして平均評価数を上書きとかできないかなと思たのですが、これはなんか違う
   気がします。
    どのようにすれば解決しますでしょうか？
 * 今やろうとしていることがそもそも不可能であるなら、他にランキング作成してを記事
   を取得する方法があれば教えていただきたいです。
    -  このトピックは[d.w.c](https://ja.wordpress.org/support/users/dwc-1/)が9年、
      9ヶ月前に変更しました。

2件の返信を表示中 - 1 - 2件目 (全2件中)

 *  トピック投稿者 [d.w.c](https://ja.wordpress.org/support/users/dwc-1/)
 * (@dwc-1)
 * [9年、 9ヶ月前](https://ja.wordpress.org/support/topic/acf%e3%81%a7%e4%bd%9c%e3%81%a3%e3%81%9f%e6%8a%95%e7%a8%bf%e5%9e%8b5%e6%ae%b5%e9%9a%8e%e8%a9%95%e3%81%ae%e5%b9%b3%e5%9d%87%e5%be%97%e7%82%b9%e3%82%92%e3%82%82%e3%81%a8%e3%81%ab%e8%a8%98%e4%ba%8b/#post-211502)
 * add post meta　と　update post meta　を使えばなんかできそうな気がしてきたので、
   試してみます。
 *  トピック投稿者 [d.w.c](https://ja.wordpress.org/support/users/dwc-1/)
 * (@dwc-1)
 * [9年、 9ヶ月前](https://ja.wordpress.org/support/topic/acf%e3%81%a7%e4%bd%9c%e3%81%a3%e3%81%9f%e6%8a%95%e7%a8%bf%e5%9e%8b5%e6%ae%b5%e9%9a%8e%e8%a9%95%e3%81%ae%e5%b9%b3%e5%9d%87%e5%be%97%e7%82%b9%e3%82%92%e3%82%82%e3%81%a8%e3%81%ab%e8%a8%98%e4%ba%8b/#post-211505)
 * 下記のコードを集計コードの下につけることで自己解決しました。
 *     ```
       <?php //ランキング用のカスタムフィールドへ格納
       //獲得平均星数
       update_post_meta( $post_id, 'post-star-ave', $ave_star ); 
       //総投稿者数
       update_post_meta( $post_id, 'post-star-people', $people ); 
       ?> 
       ```
   
    -  この返信は9年、 9ヶ月前に[d.w.c](https://ja.wordpress.org/support/users/dwc-1/)
      が編集しました。

2件の返信を表示中 - 1 - 2件目 (全2件中)

 トピック「acfで作った投稿型5段階評の平均得点をもとに記事のランキングを作りたい。」
には新たに返信することはできません。

 * フォーラム: [使い方全般](https://ja.wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 2件の返信
 * 1人の参加者
 * 最後の返信者: [d.w.c](https://ja.wordpress.org/support/users/dwc-1/)
 * 最後の活動: [9年、 9ヶ月前](https://ja.wordpress.org/support/topic/acf%e3%81%a7%e4%bd%9c%e3%81%a3%e3%81%9f%e6%8a%95%e7%a8%bf%e5%9e%8b5%e6%ae%b5%e9%9a%8e%e8%a9%95%e3%81%ae%e5%b9%b3%e5%9d%87%e5%be%97%e7%82%b9%e3%82%92%e3%82%82%e3%81%a8%e3%81%ab%e8%a8%98%e4%ba%8b/#post-211505)
 * 状態: 解決済

## トピック

### 人気のトピック

### 返信がないトピック

### サポート関連ではないトピック

### 解決済みのトピック

### 未解決のトピック

### すべてのトピック
