【WordPress】カスタムフィールドに登録した違う投稿の数値を集計する
投稿の条件付き検索の実装について書いた記事の中で、カスタムフィールドの値を集計することもできる、ということを書きました。
せっかくなので、その方法について備忘録として書いておくことにします。
クエリの条件でループが表示されているということ
そのままですが。
クエリの条件に当てはまる投稿データを、ループで表示している事になります。
ループで表示する内容は、基本的にはHTMLで用意するものとなります。
カスタムフィールドを表示する場合には、カスタムフィールドの値を関数で呼び出しています。
カスタムフィールドの値は投稿により異なりますが、呼び出すフィールドキーやフィールドネームは同一のものです。
なので、それぞれの投稿データに登録されているカスタムフィールドの値を、どうやって集計するかを考えます。
変数で配列にして、array_sum()で合計を出す
すでに答えになってますが。
まずは、取得できるカスタムフィールドの値を変数に入れます。
今回はAdvanced Custom Fieldsで作成したカスタムフィールドの値を使うので、get_field()を使用します。
1 2 3 4 | <?php //変数の後に[]で配列に格納できる $test_amount[] = get_field( 'test-number' ); ?> |
これで、○○という変数にクエリで呼び出した投稿に保存されている、○○というカスタムフィールドに保存されている値が配列で格納されます。
あとは、呼び出したい場所でechoするだけです。
1 2 | <!-- array_sum()で配列の内容を合計できる --> <p><?php echo number_format( array_sum( $test_amount ) ); ?></p> |
格納している数値が大きい場合は、number_format()で桁区切りをつけると見やすくなります。
これで集計はできますが、四則演算もarray_sum()をした後にすることもできるので。
例えば集計した数値を小計、税込み額を合計で表示することもできます。
1 2 3 4 5 6 7 8 9 10 | <?php $test_amount[] = get_field( 'test-number' ); //小計として変数に $test_subtotal = array_sum( $test_amount ); //税額(10%)を計算して合計額に $test_total = $test_subtotal * 1.1; //税額を別で表示するのであれば $test_tax = $test_subtotal * 0.1; $test_total = $test_subtotal + $test_tax; ?> |
ちょっとした集計をしたい場合に便利
本来はSQLで行った方が良い気もしますが。
ループで値を呼び出しているので、それを使う方法もあるということで残しておきます。
集計結果をPOSTで渡せば何度も計算する必要もないので、簡単な集計を行う場合の選択肢の一つにもできます。
WordPress初心者~中級者の方にオススメの本!
初心者と言ってもある程度WordPressでブログなどを作成した方にオススメです。
基本的なことから、「あれ何だっけ?」と忘れがちな事が良くまとめられています。
コードとプラグインの利用を平行させたWordPressの制作をする際に横に置いておきたい本です。
前の記事
【WordPress】カスタムフィールドを使用した投稿の条件付検索を実装する
次の記事
【WordPress】サイトのページをブラウザ機能でPDF化する
こちらも読まれています
お問い合せ
この記事の内容や当社についてのお問い合わせはこちらのフォームをご覧下さい。
ご利用前に当社のプライバシーポリシーと免責事項をお読み下さい。
送信ボタンを押された時点で、当社プライバシーポリシー又は、免責事項にご同意頂いたものとみなします。