みなさんに質問があります。
僕の説明がわかりづらいと指摘があったので詳しく説明します。
wordpressでぐるなびapiを使っていますが、ぐるなびapiには当然コメントフォームを設けるレスポンスフィールドがありません。
口コミ機能の基本的な書き方はわかります。また、ユーザー管理をデータベースで扱うことはわかります。
わからないのは、食べログみたいに一つ一つの店舗に口コミ機能をつけるやり方です。
『美味しいうどんが食べたい』というサイトがあります。(サイトのurlはhttp://umai-udon.info)
このサイトはyahooapiを使った口コミサイトです。
yahooapiとぐるなびapiは違います。ですが、apiを使った口コミサイトです。yahooapiで口コミサイトを作れるなら、ぐるなびapiでも作れるはずです。
apiから情報を取得するコードに口コミを実装するコードが書けないなら、どこに口コミを実装するコードを書けばいいですか?
※みなさん、回答ありがとうございます。
みなさんの回答、大変参考になりました。
ところどころ、批判的になるところがありすみませんでした。
ですが、それでも回答してくれたみなさんに感謝します。
本当にありがとうございます。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/04 08:51
2016/07/04 08:56
2016/07/04 08:57
2016/07/04 08:58
2016/07/04 08:58
2016/07/04 08:59
2016/07/04 09:01
2016/07/04 09:04
2016/07/04 09:05
2016/07/04 09:09
2016/07/04 09:10
回答5件
0
以前、質問者さんと全く同じような質問を連投されていた方( https://teratail.com/users/442ky119#question )がいたんですが、その際に以下のような回答をしました。
参照)https://teratail.com/questions/37226
ご質問のことについて真っ直ぐに回答だけを求めても、今の質問者さんでは何の解決力も身につかないままになってしまいそうです。
今、質問者さんに必要な学習は以下のようなものになりそうです。
- HTMLとCSSについて
- JavaScriptでHTML/CSSを動的に変更するという意味とその方法
- (個別のではなく)APIとはなにか、またそこで使われている通信の意味
- 使いたいAPIの仕様
上記のような順序で学習を積み重ねないと、どんなに回答で教わった手順をおっても理解には繋がらないと思います。
つまりやりたいことのたびにその回答を質問しないと解決できない状態が続く、ということです。
質問者さんがこの先どのように技術に触れていくのかにもよるかもしれませんが、1+1の次に1+2の回答を聞くようなことを繰り返すのではなく、足し算のやり方を理解して掛け算について質問するような、学習の仕方をしましょう。
上記に加えて、
- そもそもPHPでデータを取得する方法
- 取得したデータを加工する方法
- 取得したデータをDBに格納する方法(もしくはWordPressの機能を利用したデータの登録)
- DBを扱う場合であればSQL等
等々「それ以前」に知らなければならないことが非常に多いように見受けられます。
なぜ得たい回答を得られないのか
適切な質問には、その前提となる適切な知識が必要になります。
それは同時に「回答が理解できなければそれ以前の知識が不足している」事を示します。
質問者さんは説明が「伝わらない」と思っているようですがそうではなくて「適切な質問ができていない」のですよ。
的外れな質問なんです。
APIを利用するなど他人のデータを扱う前に、自分側で持っているデータを適切に扱える技術・知識を持ってからであれば、他所からデータを取得してそのデータを扱うことについての説明を充分わかる程度に適切な質問ができるはずです。
この、一連の質問を始められてから既に2週間ほど経過しているようですが、まず今のままの進め方をしている限り、求めるものにたどり着く道はないに等しいと感じます。
同じ2週間を、不足している知識の習得に使えば、あるいはそろそろ適切な質問ができたかもしれません。
あとは質問者さんがこの先どのように成長したいのか、それとも自分が正しいと思い続けるのか次第です。
投稿2016/07/04 09:13
総合スコア2042
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/04 09:40
2016/07/04 11:47
2016/07/04 14:09
2016/07/04 14:15
2016/07/04 14:20
2016/07/04 15:04 編集
2016/07/04 15:10
0
あなたのサーバーに配置するファイルに書くんですよ。
説明がわかりにくいのはあなたの心情等の無駄な情報が入っているからです。
要約すると「ぐるなびAPIを使って口コミサイトを作ってください」の1行だけになりますね。丸投げですね。
投稿2016/07/04 08:47
総合スコア18155
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/04 09:11
2016/07/04 09:19
2016/07/04 09:23
2016/07/04 11:35
2016/07/04 11:35
2016/07/04 12:05
2016/07/04 14:06
2016/07/04 14:21
2016/07/04 16:02
2016/07/04 18:01
0
みなさんに質問があります。
僕の説明がわかりづらいと指摘があったので詳しく説明します。
指摘される前に、読み直して推敲してください。
wordpressでぐるなびapiを使っていますが、ぐるなびapiには当然コメントフォームを設けるレスポンスフィールドがありません。
「コメントフォームを設けるレスポンスフィールド」「設ける」とは?
まさか、まだ、レスポンスフィールドの構造を変えようとしているのでしょうか。
これまで何度も指摘されているように不可能です。
口コミ機能の基本的な書き方はわかります。
過去の質問よりHTMLのフォームの書き方だけは理解しているのはわかります。
また、ユーザー管理をデータベースで扱うことはわかります。
過去の質問で回答がありましたね。
この表現だと、「ユーザー管理」をするときにのみ「データベース」を使うと認識しているということでしょうか。
だとすればそもそも「データベース」とはとは何なのかを理解していないということになります。
データベースは「ユーザー管理」以外の目的で利用することもあります。
わからないのは、食べログみたいに一つ一つの店舗に口コミ機能をつけるやり方です。
つけたところで、何のメリットがあるのでしょう。ぐるナビのサイトに投稿できるわけではないのに。以前の質問への回答に、DBに書き込むしか方法はないだろうと、回答されていますね。
あなたの環境のDBに書き込んだところで、ぐるナビのサイトに反映されるわけじゃないことは基本的に理解しているのでしょうか。
「ぐるなびapiには当然コメントフォームを設けるレスポンスフィールドがありません」と書いてあることから、根本的な認識が間違っているのではと推測されます。
『美味しいうどんが食べたい』というサイトがあります。(サイトのurlはhttp://umai-udon.info)
このサイトはyahooapiを使った口コミサイトです。
yahooapiとぐるなびapiは違います。ですが、apiを使った口コミサイトです。yahooapiで口コミサイトを作れるなら、ぐるなびapiでも作れるはずです。
api が異なるのですから、同じものができるとは限りません。
apiから情報を取得するコードに口コミを実装するコードが書けないなら、どこに口コミを実装するコードを書けばいいですか?
テキストファイルにコードを書き、実行環境に配置します。これを回答しようとすると、本を数冊書くほどの労力が必要となります。
投稿2016/07/04 09:24
編集2016/07/04 09:50退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
WordPress フォーラムでも色々質問されていた方と、teratail の別のアカウント名の方と色々かぶるのですが、それは置いておいて、WordPress で実装するとした場合、以下になると思います。
ちなみに、コードは書きません。理由は、ここに書ける程のコード量でないからです。
店舗管理用カスタム投稿タイプを用意
この投稿タイプは、API から引っ張ってきたデータを格納する為のデータベースです。タイトル、本文、カスタムフィールドを駆使して店舗毎のデータを格納していきます。
public のカスタム投稿タイプにすることで、個別ページが出来上がるので、デザインをのせれば店舗ページはできあがります。
コメント機能を使って口コミのデータを作成
WordPress の投稿タイプは、基本的にコメント機能がセットです。口コミは、コメント機能を利用するのが簡単でしょう。サイト利用者が口コミを書き込むにしても、API で口コミを引っ張ってきてデータを格納するにしても、これが一番適切な機能の利用だと思います。
コメント機能にも、コメントメタという機能がるので、評価をいれることはできますし、この辺りは、先人たちがプラグインを作成してくれていますし、それをありがたく利用させていただくのが一番いいと思います。
店舗データの作成[自動]
自動で店舗データを作成する場合、WP Cron を使うのが簡単でしょう。WP Cron を使って、API リクエスト制限に引っかからない程度に API からデータを引っ張ってきて、投稿データを作成します。
ただし、API から取得できるデータを自身のデータベースに収めるのは、利用規約に引っ掛かる場合もありそうなので、その辺りは、問い合わせるなり、利用規約を読むなりしてください。
店舗データの作成[手入力]
管理画面の投稿画面で、API で検索できるようにする。必要な店舗データだけを手作業で作成。
ただし、API から取得できるデータを自身のデータベースに収めるのは、利用規約に引っ掛かる場合もありそうなので、その辺りは、問い合わせるなり、利用規約を読むなりしてください。
まとめ
こんな感じで、口コミサイトはできると思います。基本的に WordPress の基本機能しか使ってません。ちなみに、追加でご質問いただいても、これ以上は回答しかねます。過去のやり取りを拝見する限り、私が解決まで導くのは不可能だと思いますので。力及ばず申し訳ありません。
大変だと思いますが、頑張ってください!
投稿2016/07/05 05:15
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ソースコードだけを見てあなたが理解できるかどうかは、私には興味がありません。
煮るなり焼くなりどうぞ。
html
1<?php 2 3function h($string) 4{ 5 return htmlspecialchars($string, ENT_QUOTES, 'utf-8'); 6} 7 8$filename = 'リクエストURL'; 9$json = file_get_contents($filename); 10$arrData = json_decode($json); 11?> 12<!DOCTYPE HTML> 13<html lang="ja"> 14 <head> 15 <meta charset="UTF-8"> 16 <title></title> 17 <style type="text/css"> 18 #wrap { 19 width: 80%; 20 margin: 0 auto; 21 } 22 .table { 23 border-collapse: collapse; 24 margin: 2em 0; 25 width: 100%; 26 } 27 .table th, .table td { 28 border: 1px solid #333; 29 } 30 textarea { 31 width: 100%; 32 } 33 </style> 34 </head> 35 <body> 36 <div id="wrap"> 37 <?php foreach ($arrData->response as $key => $val): ?> 38 <?php if (is_numeric($key)) : ?> 39 <form action=""> 40 41 <table class="table"> 42 <?php foreach ($val->photo as $k => $v) : ?> 43 <?php if (is_string($v)): ?> 44 <tr> 45 <td><?= h($k); ?></td> 46 <td><?= h($v); ?></td> 47 </tr> 48 <?php endif; ?> 49 <?php endforeach; ?> 50 </table> 51 52 <h2>コメント</h2> 53 <textarea name="comment" cols="30" rows="10"></textarea> 54 <button>投稿する</button> 55 56 </form> 57 <?php endif; ?> 58 <?php endforeach; ?> 59 </div> 60 </body> 61</html>
data.json レスポンスサンプル
json
1{ 2 "response": { 3 "@attributes": { 4 "api_version": "20150630" 5 }, 6 "total_hit_count": 6, 7 "hit_per_page": 6, 8 "0": { 9 "photo": { 10 "vote_id": "2335473", 11 "photo_genre_id": "1", 12 "photo_genre_name": "\u6599\u7406\u30fb\u30c9\u30ea\u30f3\u30af", 13 "photo_scene_id": "", 14 "photo_scene_name": "", 15 "nickname": "\u3050\u308b\u306a\u3073\u4f1a\u54e1", 16 "shop_id": "g695000", 17 "shop_name": "\u500b\u5ba4\u4f1a\u5e2d \u5317\u5927\u8def\u8d64\u5742\u8336\u5bee", 18 "shop_url": "http:\/\/r.gnavi.co.jp\/g695000\/?ak=ZUq9gJ6wwfraf67wlyv5cMfP4MJrmJv47YXylU%2FRSwI%3D", 19 "prefname": "PREF13:\u6771\u4eac\u90fd", 20 "menu_id": 1021940, 21 "menu_name": "\u30fb\u6708\u4f1a\u5e2d\u30fb\u30fb\u30fb\uff11\uff10\uff0c\uff10\uff10\uff10\u5186\u3000\u3050\u308b\u306a\u3073\u5272\u5f15\u3000\uff19\uff0c\uff10\uff10\uff10\u5186", 22 "menu_finish_flag": 0, 23 "areaname_l": "\u8d64\u5742\u30fb\u516d\u672c\u6728\u30fb\u9ebb\u5e03", 24 "areaname_m": "\u8d64\u5742", 25 "areaname_s": "\u8d64\u5742", 26 "image_url": { 27 "url_1024": "http:\/\/mr.gnavi.co.jp\/cont\/menu_image\/17\/ae\/2335473_l.jpeg", 28 "url_320": "http:\/\/mr.gnavi.co.jp\/cont\/menu_image\/17\/ae\/2335473.jpeg", 29 "url_250": "http:\/\/mr.gnavi.co.jp\/cont\/menu_image\/17\/ae\/2335473_m.jpeg", 30 "url_200": "http:\/\/mr.gnavi.co.jp\/cont\/menu_image\/17\/ae\/2335473_s.jpeg" 31 }, 32 "comment": "\u304b\u306a\u308a\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u3042\u308b\u61d0\u77f3\u6599\u7406\u3067\u3057\u305f\u3001\u30de\u30b0\u30ed\u304c\u304a\u3044\u3057\u304b\u3063\u305f\u3067\u3059\u3002", 33 "total_score": "4.0", 34 "category": "\u8d64\u5742 \u500b\u5ba4 \u63a5\u5f85 \u4f1a\u98df", 35 "latitude": "35.675243", 36 "longitude": "139.738645", 37 "umaso_count": 0, 38 "update_date": "2012-12-31 02:20:15", 39 "messages": { 40 "user_message_count": 0, 41 "shop_message_count": 0, 42 "first_shop_message": { 43 "message_body": "", 44 "send_date": "" 45 } 46 } 47 } 48 }, 49 "1": { 50 "photo": { 51 "vote_id": "2392501", 52 "photo_genre_id": "1", 53 "photo_genre_name": "\u6599\u7406\u30fb\u30c9\u30ea\u30f3\u30af", 54 "photo_scene_id": "", 55 "photo_scene_name": "", 56 "nickname": "\u03a8\u3042\u3084\u03a8", 57 "shop_id": "g695000", 58 "shop_name": "\u500b\u5ba4\u4f1a\u5e2d \u5317\u5927\u8def\u8d64\u5742\u8336\u5bee", 59 "shop_url": "http:\/\/r.gnavi.co.jp\/g695000\/?ak=ZUq9gJ6wwfraf67wlyv5cMfP4MJrmJv47YXylU%2FRSwI%3D", 60 "prefname": "PREF13:\u6771\u4eac\u90fd", 61 "menu_id": 1026515, 62 "menu_name": "\u524d\u83dc", 63 "menu_finish_flag": 0, 64 "areaname_l": "\u8d64\u5742\u30fb\u516d\u672c\u6728\u30fb\u9ebb\u5e03", 65 "areaname_m": "\u8d64\u5742", 66 "areaname_s": "\u8d64\u5742", 67 "image_url": { 68 "url_1024": "http:\/\/mr.gnavi.co.jp\/cont\/menu_image\/17\/ae\/2392501_l.jpeg", 69 "url_320": "http:\/\/mr.gnavi.co.jp\/cont\/menu_image\/17\/ae\/2392501.jpeg", 70 "url_250": "http:\/\/mr.gnavi.co.jp\/cont\/menu_image\/17\/ae\/2392501_m.jpeg", 71 "url_200": "http:\/\/mr.gnavi.co.jp\/cont\/menu_image\/17\/ae\/2392501_s.jpeg" 72 }, 73 "comment": "\u8d64\u6885\u7518\u9732\u716e\u30fb\u305f\u3089\u3053\u5dfb\u30fb\u84ee\u6839\u7c89\u7bc0\u30fb\u59eb\u30b5\u30b6\u30a8\u30fb\u83dc\u306e\u82b1\u30fb\u6570\u306e\u5b50\u30fb\u9326\u7389\u5b50\u30fb\u6d77\u8001\u5bff\u53f8\u30fb\u77ed\u518a\u4eba\u53c2\u3002\u5168\u56fd\u5404\u5730\u3088\u308a\u9078\u3073\u629c\u304b\u308c\u305f\u65ec\u306e\u7d20\u6750\u3092\u3082\u3068\u306b\u3001\u719f\u7df4\u3057\u305f\u548c\u306e\u8077\u4eba\u304c\u7e54\u308a\u306a\u3059\u7e4a\u7d30\u306a\u65e5\u672c\u6599\u7406\u304c\u697d\u3057\u3081\u307e\u3059\u3002", 74 "total_score": "4.0", 75 "category": "\u8d64\u5742 \u500b\u5ba4 \u63a5\u5f85 \u4f1a\u98df", 76 "latitude": "35.675243", 77 "longitude": "139.738645", 78 "umaso_count": 0, 79 "update_date": "2013-01-22 21:03:36", 80 "messages": { 81 "user_message_count": 0, 82 "shop_message_count": 0, 83 "first_shop_message": { 84 "message_body": "", 85 "send_date": "" 86 } 87 } 88 } 89 }, 90 "2": { 91 "photo": { 92 "vote_id": "2392502", 93 "photo_genre_id": "1", 94 "photo_genre_name": "\u6599\u7406\u30fb\u30c9\u30ea\u30f3\u30af", 95 "photo_scene_id": "", 96 "photo_scene_name": "", 97 "nickname": "\u03a8\u3042\u3084\u03a8", 98 "shop_id": "g695000", 99 "shop_name": "\u500b\u5ba4\u4f1a\u5e2d \u5317\u5927\u8def\u8d64\u5742\u8336\u5bee", 100 "shop_url": "http:\/\/r.gnavi.co.jp\/g695000\/?ak=ZUq9gJ6wwfraf67wlyv5cMfP4MJrmJv47YXylU%2FRSwI%3D", 101 "prefname": "PREF13:\u6771\u4eac\u90fd", 102 "menu_id": 1026516, 103 "menu_name": "\u304a\u9020\u308a", 104 "menu_finish_flag": 0, 105 "areaname_l": "\u8d64\u5742\u30fb\u516d\u672c\u6728\u30fb\u9ebb\u5e03", 106 "areaname_m": "\u8d64\u5742", 107 "areaname_s": "\u8d64\u5742", 108 "image_url": { 109 "url_1024": "http:\/\/mr.gnavi.co.jp\/cont\/menu_image\/17\/ae\/2392502_l.jpeg", 110 "url_320": "http:\/\/mr.gnavi.co.jp\/cont\/menu_image\/17\/ae\/2392502.jpeg", 111 "url_250": "http:\/\/mr.gnavi.co.jp\/cont\/menu_image\/17\/ae\/2392502_m.jpeg", 112 "url_200": "http:\/\/mr.gnavi.co.jp\/cont\/menu_image\/17\/ae\/2392502_s.jpeg" 113 }, 114 "comment": "\u307e\u3050\u308d\u30fb\u91d1\u76ee\u9bdb\u30fb\u7518\u6d77\u8001\u30fb\u523a\u8eab\u6e6f\u8449\u3002\u307e\u3050\u308d\u3082\u91d1\u76ee\u9bdb\u3082\u9a5a\u304f\u307b\u3069\u7518\u304f\u3066\u7f8e\u5473\u3067\u3057\u305f\u3002", 115 "total_score": "3.0", 116 "category": "\u8d64\u5742 \u500b\u5ba4 \u63a5\u5f85 \u4f1a\u98df", 117 "latitude": "35.675243", 118 "longitude": "139.738645", 119 "umaso_count": 0, 120 "update_date": "2013-01-22 21:04:16", 121 "messages": { 122 "user_message_count": 0, 123 "shop_message_count": 0, 124 "first_shop_message": { 125 "message_body": "", 126 "send_date": "" 127 } 128 } 129 } 130 } 131 } 132}
投稿2016/07/04 15:24
編集2016/07/04 16:37総合スコア266
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。