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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

2293閲覧

カスタムフィールドの値の平均値や最小値を表示したい

junkinnet

総合スコア7

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/04/16 05:27

編集2022/01/12 10:55

WP初心者です。どなたかご教示願えれば幸いです。

※kei344様、ご指摘いただきありがとうございます!内容を編集いたしました。

カスタムフィールドに入力した値の平均値を表示したいのですが、そういったことは可能でしょうか?

■やりたいこと
特定のカスタムフィールドに入力した値の、平均値を表示したい
※対象はカスタム投稿の全記事です。

■現状
カスタム投稿タイプ、カスタムフィールドは以下を参照にしています。
http://yahss.net/wordpress/587-custom_post_type_and_custom_field/

現状は、function.phpに以下のように記述しており、

<?php //----------------------------------------- // カスタム投稿タイプ //----------------------------------------- add_action( 'init', 'create_post_type' ); function create_post_type() { register_post_type( 'store', array( 'labels' => array( 'name' => __( 'ストア' ), 'singular_name' => __( 'ストア' ), 'all_items' => 'ストア一覧', ), 'public' => true, 'menu_position' =>5, 'has_archive' => true, 'supports' => array('title','editor','thumbnail') ) ); register_taxonomy( 'store-area', 'store', array( 'hierarchical' => true, 'update_count_callback' => '_update_post_term_count', 'label' => 'エリア', 'singular_label' => 'エリア', 'public' => true, 'show_ui' => true ) ); flush_rewrite_rules( true ); } //----------------------------------------- // カスタムフィールド //----------------------------------------- $meta_arr['price'] = array('価格','single'); /*** カスタムフィールドコンテンツの作り込み ***/ function my_meta_boxes() { global $post, $meta_arr; //metaの現在の登録値を取得(可変変数) foreach($meta_arr as $meta => $meta_val) { $true = ( $meta_val[1] == 'single' )? true: false; $val = $meta.'Val'; $nam = $meta.'Nam'; $$nam = $meta_val[0]; $$val = get_post_meta( $post->ID, $meta, $true ); } ?> <!--価格--> <p> <?php echo $priceNam ?><br> <input name="price" type="text" value="<?php echo $priceVal ?>" style="width:100%"> </p> <?php } /*** 投稿画面にカスタムフィールドのセクションを追加 ***/ function create_meta_box() { if ( function_exists('add_meta_box') ) add_meta_box( 'my-meta-boxes', 'ストア情報', 'my_meta_boxes', 'store', 'normal', 'high' ); } /*** カスタムフィールド入力値の保存 ***/ function save_postdata( $post_id ) { global $post, $meta_arr; foreach($meta_arr as $meta => $arr) { $true = ( $arr == 'single' )? true: false; $meta_cur = get_post_meta($post_id, $meta, $true); $meta_new = $_POST[$meta]; if( $meta_cur == "" && $meta_new != "") { add_post_meta($post_id, $meta, $meta_new, true); } elseif ( $meta_cur != $meta_new ) { update_post_meta($post_id, $meta, $meta_new); } elseif ( $meta_new == "" ) { delete_post_meta($post_id, $meta, get_post_meta($post_id, $meta_cur, true)); } } } add_action('admin_menu', 'create_meta_box'); add_action('save_post', 'save_postdata');

表示したい「~~~.php」のテンプレート上には、

$price = get_post_meta( $post->ID, 'price', true ); ?> <?php echo number_format($price); ?>

と、その値を表示しています。

例えば、カスタム投稿の記事を10個投稿したときに、記事1~記事10の「price」の値の平均値を表示したいのですが、

そういったことは可能なのでしょうか?
記述や方法など、ご教示願えたら幸いです。

お忙しい中恐れ入りますが、何卒よろしくお願いいたします。

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

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

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

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

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

kei344

2017/04/16 06:34

質問文のコードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。また、省略せずにコードを書かれたほうが良いと思います。
guest

回答1

0

price というカスタムフィールドをカスタム投稿タイプ以外で使わないなら $wpdb に AVG関数 を使ったSQLを投げるのが一番低コストかな、と思います。

【AVG関数 - MySQL関数の使い方 - MySQLの使い方】
https://www.dbonline.jp/mysql/function/index5.html

【WordPressでシステム開発をする時に必要なクエリ操作について - Qiita】
http://qiita.com/yousan/items/f29e7010a1384c1e1206

【関数リファレンス/wpdb Class - WordPress Codex 日本語版】
https://wpdocs.osdn.jp/関数リファレンス/wpdb_Class

【データベース構造 - WordPress Codex 日本語版】
https://wpdocs.osdn.jp/データベース構造#Table:_wp_postmeta


他の方法としては、下記のような方法も考えられなくは無いですが無駄すぎるのでお勧めはしません。
0. 全記事をループ
0. meta price をそれぞれ取得
0. 全部取得できたら足して記事数で割る

投稿2017/04/16 07:58

kei344

総合スコア69364

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問