前提・実現したいこと
指定期間内の投稿件数を集計し、ショートコードとして埋め込んだ場所に表示させたい。
集計したい項目は
0. 月間投稿数
0. 年間投稿数
の2つです。
個別にショートコードとして登録し、ウィジェットとして表示させたいと思っています。
発生している問題・エラーメッセージ
自作したショートコードは次のとおりです。
これを実行しても集計結果が反映されません。
該当のソースコード
下記のショートコードで『月間投稿数』を集計するものとして作りました。
PHP
1function sumMM(){ 2 3// 初期化 4$countMM = 0; 5 6// 設定ページIDの設定 7$sid = 189; 8 9// 月間集計の設定読込 10if ( have_rows( 'set_kzn_month' , $sid ) ) : 11 while ( have_rows( 'set_kzn_month' , $sid ) ) : the_row(); 12 $set_m_start = get_sub_field( 'set_m_start' , $sid ); 13 $set_m_end = get_sub_field( 'set_m_end' , $sid ); 14 endwhile; 15endif; 16$args1 = array( 17 'post_type' => 'post', 18 'post_status' => 'publish' 19); 20$the_query1 = new WP_Query( $args1 ); 21 while ( $the_query1->have_posts() ) { 22 $the_query1->the_post(); 23 24 // ページIDの取得 25 $tid = get_the_ID(); 26 27 // 基本情報の取得 28 if ( have_rows( 'kzn_info' , $tid ) ) : 29 while ( have_rows( 'kzn_info' , $tid ) ) : the_row(); 30 $kzn_reg_date = get_sub_field( 'kzn_reg_date' , $tid ); 31 if( ( $kzn_reg_date > $set_m_start ) && ( $kzn_reg_date <= $set_m_end ) ){ $countMM++; } 32 endwhile; 33 endif; 34 }; 35 36 wp_reset_postdata(); 37 38 return $countMM; 39} 40add_shortcode('sumMM','sumMM');
試したこと
- いろいろ試しているうちに、ワードプレスの「設定 > 表示設定」にある『1ページに表示する最大投稿数』と連携?連動?して数値が変動していることがわかり、上記ソースコードにあるように、$the_queryの後に採番してみましたがだめでした。
- 表示の設定に連動することがわかり、投稿に関する抽出用のサブループを設定していないのかなと思って、下記の通り、サブループを設定してみました。なんの関連性もない数値が返ってきて、どうしたらよいか迷走しています。
php
1 2/*------------------------------------------------------------------------------------ 3/* カスタマイズ:月間集計用ショートコード 4/*----------------------------------------------------------------------------------*/ 5function sumMM(){ 6 7// 初期化 8$countMM = 0; 9 10// 設定ページIDの設定 11$sid = 189; 12 13// 月間集計の設定読込 14if ( have_rows( 'set_kzn_month' , $sid ) ) : 15 while ( have_rows( 'set_kzn_month' , $sid ) ) : the_row(); 16 $set_m_start = get_sub_field( 'set_m_start' , $sid ); 17 $set_m_end = get_sub_field( 'set_m_end' , $sid ); 18 endwhile; 19endif; 20 21 $KZM_Query = new WP_Query( 22 array( 23 'post_type' => 'post', 24 'post_status' => 'publish' 25 ) 26 ); 27 28 if($KZM_Query -> have_posts()): 29 while($KZM_Query -> have_posts()): 30 $KZM_Query -> the_post(); 31 32 // ページIDの取得 33 $tid = get_the_ID(); 34 35 // 基本情報の取得 36 if ( have_rows( 'kzn_info' , $tid ) ) : 37 while ( have_rows( 'kzn_info' , $tid ) ) : the_row(); 38 $kzn_reg_date = get_sub_field( 'kzn_reg_date' , $tid ); 39 if( ( $kzn_reg_date > $set_m_start ) && ( $kzn_reg_date <= $set_m_end ) ){ $countMM++; } 40 endwhile; 41 endif; 42 43 endwhile; 44 45 endif; 46 47 wp_reset_postdata(); 48 49 return $countMM; 50} 51add_shortcode('sumMM','sumMM'); 52 53/*------------------------------------------------------------------------------------ 54/* カスタマイズ:年間集計用ショートコード 55/*----------------------------------------------------------------------------------*/ 56function sumYY(){ 57 58// カウンタ初期化 59$countYY = '0'; 60 61// 設定ページIDの設定 62$sid = 189; 63 64// 月間集計設定の読込 65if ( have_rows( 'set_kzn_year' , $sid ) ) : 66 while ( have_rows( 'set_kzn_year' , $sid ) ) : the_row(); 67 $set_y_start = get_sub_field( 'set_y_start' , $sid ); 68 $set_y_end = get_sub_field( 'set_y_end' , $sid ); 69 endwhile; 70endif; 71 72 73 74 $KZY_Query = new WP_Query( 75 array( 76 'post_type' => 'post', 77 'post_status' => 'publish' 78 ) 79 ); 80 81 if($KZY_Query -> have_posts()): 82 while($KZY_Query -> have_posts()): 83 $KZY_Query -> the_post(); 84 85 // ページIDの取得 86 $tid = get_the_ID(); 87 88 // 基本情報の取得 89 if ( have_rows( 'kzn_info' , $tid ) ) : 90 while ( have_rows( 'kzn_info' , $tid ) ) : the_row(); 91 $kzn_reg_date = get_sub_field( 'kzn_reg_date' , $tid ); 92 if( ( $kzn_reg_date > $set_y_start ) && ( $kzn_reg_date <= $set_y_end ) ){ $countYY++; } 93 endwhile; 94 endif; 95 96 endwhile; 97 98 endif; 99 100 wp_reset_postdata(); 101 102 return $countYY; 103} 104add_shortcode('sumYY','sumYY');
補足情報
・ワードプレスのバージョン:5.8.2
・ワードプレスの使用テーマ:hummingbird
・データベース:10.3.15-MariaDB
・PHPのバージョン:7.4.10
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/12/09 23:49