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

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

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

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

PHP

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

Q&A

解決済

1回答

1022閲覧

カスタムフィールドでコメントに項目を追加しそのすべての結果をsingle.phpに出力したい

ski565

総合スコア10

WordPress

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

PHP

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

0グッド

0クリップ

投稿2020/05/17 23:39

■前提
Wordpressを使用しています。

■実現したいこと
Advanced Custom Fieldsを用いてコメントにselectのカスタムフィールドを用意し、
投稿記事毎にその結果の項目ごとの数字を取得したいです。

selectの項目は仮ですが
・見たい
・見た
・見てない
・見たくない
です。

投稿記事毎に

・見たい 3件
・見た 0件
・見てない 0件
・見たくない 10件

のように0件の場合、1件以上の場合のすべてで表示させるイメージです。

■試したこと

<?php $args = array( 'post_id' => get_the_ID(), ); $comments = get_comments( $args ); foreach( $comments as $comment) { $array[] = get_comment_meta( $comment->comment_ID, 'フィールド名', true ); } $aaa = array_count_values($array); foreach($aaa as $key => $value){ echo 'key : '.$key; echo '<br>'; echo ' value : '.$value; echo '<br>'; } ?>

phpの知識があまりない中でここまで試したんですが、
これだと1件以上選択されてるものしか表示されず、
コメント自体が0件の場合エラーになってしまうのでやり方が違うんだと思います。
出たエラーは
Warning: array_count_values() expects parameter 1 to be array, null given in
で始まる記述です。

0件でも結果を表示させたいのでかなり複雑なのかなと思い始めてますが、
ヒントになるようなことでも構いませんので、宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんな感じですかね。
最初のmitai、mita、mitenai、mitakunaiは実際のselectのvalueに合わせてください。
データ構造は提示されたプログラムから想像しているのでご自身で調整してください。

PHP

1$aaa['mitai'] = 0; 2$aaa['mita'] = 0; 3$aaa['mitenai'] = 0; 4$aaa['mitakunai'] = 0; 5 6$comments = get_comments(array('post_id' => get_the_ID())); 7foreach ($comments as $comment) { 8 $val = get_comment_meta($comment->comment_ID, 'フィールド名', true); 9 $aaa[$val] = $aaa[$val] + 1; 10} 11 12foreach($aaa as $key => $value) { 13 $s = $key; 14 if ($key == 'mitai') { 15 $s = '見たい'; 16 } 17 if ($key == 'mita') { 18 $s = '見た'; 19 } 20 if ($key == 'mitenai') { 21 $s = '見てない'; 22 } 23 if ($key == 'mitakunai') { 24 $s = '見たくない'; 25 } 26 echo $s.' '.$value.'件'; 27 echo '<br>'; 28}

投稿2020/05/18 01:55

編集2020/05/18 03:20
tabuu

総合スコア2449

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

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

ski565

2020/05/18 02:55

早速試してみたのですが、エラーが出ちゃいまして・・・ Fatal error: Uncaught Error: Call to undefined function to_label() in ~URL to_labelというので引っかかってるように見受けられますが、代替えできるような記述方法はありますでしょうか?
tabuu

2020/05/18 03:20

ソースコードをto_label関数を作成しないように修正してみましたのでご確認ください。
ski565

2020/05/18 03:36

反映できました!挙動も問題なく望む結果が出力できました! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問