実現したいこと
ACF Pro繰り返しフィールド内の複数のサブフィールドに入力された数値の合計値を参照して、多い順に並び替えて出力したい
前提
繰り返しフィールド'number-of-surgical-2023'の中にサブフィールド'surgical-count'があります。
以下のコードで複数の'surgical-count'の合計値を出力することはできましたが、これをWP_Queryで並び替える方法がわかりませんでした。
php
1$total = 0; 2while(the_repeater_field('nunber-of-surgical-2023')): 3 $total += intval(get_sub_field('surgical-count')); 4endwhile; 5 6(中略) 7 8$outPut .= '<td>' . $total . '</td>';
ソースコード全体
php
1add_shortcode('sc_top_ranking', 'top_ranking_sc'); 2function top_ranking_sc() { 3 4 $news_query = new WP_Query([ 5 'post_type' => 'hospitals', 6 'post_status' => 'publish', 7 'posts_per_page' => 10, 8 'order' => 'ASC' 9 ]); 10 11 if ($news_query->have_posts()) { 12 $outPut .= '<table class="ranking-table"><thead><tr><th>病院名</th><td>総手術実績</td></tr></thead><tbody>' . PHP_EOL; 13 while ($news_query->have_posts()) { 14 $news_query->the_post(); 15 $total = 0; 16 while(the_repeater_field('nunber-of-surgical-2023')): 17 $total += intval(get_sub_field('surgical-count')); 18 endwhile; 19 $outPut .= '<tr>'; 20 $outPut .= '<th><a href="' . esc_url(get_permalink()) . '">' . get_the_title() . '</a></th>'; 21 $outPut .= '<td>' . $total . '</td>'; 22 $outPut .= '</tr>' . PHP_EOL; 23 }; 24 $outPut .= '</tbody></table>' . PHP_EOL; 25 } 26 wp_reset_postdata(); 27 return $outPut; 28}
試したこと
meta_keyに以下のように記述してみたりもしましたが、やはり動作しませんでした。
php
1 $total_score = 0; 2 while(the_repeater_field('nunber-of-surgical-2023')): 3 $total_score += intval(get_sub_field('surgical-count')); 4 endwhile; 5 $news_query = new WP_Query([ 6 'post_type' => 'hospitals', 7 'post_status' => 'publish', 8 'posts_per_page' => 10, 9 'meta_key' => $total_score, 10 'orderby' => 'meta_value_num', 11 'order' => 'ASC' 12 ]);
補足情報(FW/ツールのバージョンなど)
WordPress 6.3.2
Advanced Custom Fields Pro 6.2.1.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/10/30 07:26