質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

568閲覧

ワードプレスのカスタム投稿を使用したときの検索結果について

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2021/12/09 07:22

編集2021/12/09 08:39

前提・実現したいこと

指定期間内の投稿件数を集計し、ショートコードとして埋め込んだ場所に表示させたい。

集計したい項目は
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. いろいろ試しているうちに、ワードプレスの「設定 > 表示設定」にある『1ページに表示する最大投稿数』と連携?連動?して数値が変動していることがわかり、上記ソースコードにあるように、$the_queryの後に採番してみましたがだめでした。
  2. 表示の設定に連動することがわかり、投稿に関する抽出用のサブループを設定していないのかなと思って、下記の通り、サブループを設定してみました。なんの関連性もない数値が返ってきて、どうしたらよいか迷走しています。

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

これを実行しても集計結果が反映されません。

反映されませんとは、具体的にどのような状況なのでしょうか。


状況がわからないので、一部だけ回答。

いろいろ試しているうちに、ワードプレスの「設定 > 表示設定」にある『1ページに表示する最大投稿数』と連携?連動?して数値が変動していることがわかり、上記ソースコードにあるように、$the_queryの後に採番してみましたがだめでした。

関数リファレンス/WP_Query の「ページ送りパラメータ」に

posts_per_page (整数) - 1ページに含める投稿数(バージョン 2.1 以降で使えます。非推奨になった showposts パラメータを置き換えます)。
'posts_per_page'=>-1 を使用するとすべての投稿を含めます(このとき 'offset' パラメータは無視されます)。

とあるように posts_per_page を WP_Query のパラメータに指定するとどうなりますか?

投稿2021/12/09 10:30

CHERRY

総合スコア25175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/12/09 23:49

早速のご回答、ありがとうございました。 今まで「posts_per_page」を指定していませんでした。 何も設定しなければ”全件”という思い込みが有りました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問