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

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

ただいまの
回答率

88.58%

webapiのカスタム投稿

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 1,615

uverworld101nm

score 100

WordpressにおいてWEBAPIをタイトル、本文、カスタムフィールドを駆使して店舗毎のデータを格納したいのですが、つまずいています。
参考書Wordpressプラグイン&Webapi活用ガイドブックを使っています。この参考書によると、「wordpressにおいてwebapiを使う場合は、カスタムフィールドを使って記事ごとにリクエストパラメータを使い分け、phpのコードは、記事を育成するテーマテンプレートを使います」と書いてあります。
この参考書の通りにカスタムフィールドの値(ぐるなびapiのリクエストパラメータのprefです)を取得するためにテンプレートタグのpost_customを使うことはわかりましたが、そこからの先がわかりません。カスタムフィールドの名前と値がありますが、それぞれ何を入れればいいかわかりません。例えば、PREF12の値を取得したいとき(リクエストパラメータは$pref=post_custom('PREF');と書きました)、名前にPREF、値に12と書けばいいのですか?参考書の通りだとそう書きます。しかし反応はしません。
また、phpのコードは記事を育成するテーマテンプレートを使いますとありますが、投稿ページに表示するために投稿ページを作成するsingle.phpに作成したphpコードを挿入しても作成したコードが表示されません。テーマ名はtwentyfifiteenです。(ちなみに作成したphpコードは今まで固定ページで表示してきました)
どうすればカスタムフィールドを使って記事ごとにリクエストパラメータを使い分けることができますか?またどうやったらphpのコードは記事を育成するテーマテンプレートを使えるようになるのですか?
※補足
箇条書きに書いて欲しいと指摘があったので箇条書きにします。
・やりたいことは、wordpressでwebapiを利用したサイトを作りたいです。また今まで固定ページで表示してきましたが(下記)、今後は投稿ページにそれも口コミフォームを実装して表示したいです。

<?php
/*
Template Name: 固定ページの新規テンプレート1
*/
?>


・この参考書によると、webapiをwordpressで利用するにはカスタムフィールドを利用するとのことでカスタムフィールドについて質問しました。なぜなら、カスタムフィールドを利用することで表示する情報を記事毎に使い分けることができるからです。つまり、一つ一つの店舗を記事毎に収納したいです。
・リクエストの結果は保存です。
・「記事を育成するテーマテンプレート」とは僕の場合は投稿ページを作成するsingle.phpです。
・書籍の情報が古いところがあるので全部正しいとは言えません。
・書いたリクエストパラメータはこれです。post_customを使うとのことでprefに書きました。

<?php
$apikey='私のid';
$format='xml';
$offset='offset';
$hit_per_page='50';
$pref=post_custom('PREF');
$url ='http://api.gnavi.co.jp/RestSearchAPI/?keyid=' . $apikey . '&format=' . $format . '&offset=' . $offset . '&pref=' . $pref . '&hit_per_page=' . $hit_per_page;

     $xml = simplexml_load_file( $url );


僕の説明が下手なので、写真を掲載します。
こういうことはどうやったらできるのですか?

イメージ

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • uverworld101nm

    2016/07/09 11:49

    コードを一部提示しました。

    キャンセル

  • kuck1u

    2016/07/09 16:59

    素朴な疑問なのですが、質問者さんのスキルセットとして、Web API など使わず、極々普通に WordPress のオリジナルのテーマ(ブログサイトとか)をゼロから作成することはできるのでしょうか?質問内容や回答への質問をみていると、WordPress を全く理解していない、オリジナルテーマをゼロから作成できるスキルを持っていないように感じるのですが・・・。もしそうであれば、WordPress の基礎から勉強された方がよいと思います。

    キャンセル

  • 退会済みユーザー

    2016/07/11 08:45

    こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 3

+3

offsetのパラメータに渡す値は文字列ではなく数字です。

あと、prefにpost_custom("PREF")の結果を渡してますが、カスタムフィールドにPREFというフィールド名のカスタムフィールドはちゃんと存在してるのでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/07/12 18:10

    作成したいことの写真を掲載します。

    キャンセル

  • 2016/07/12 18:45

    そんなことより最初のステップをクリアしたら、そのコードを貼ってください。

    キャンセル

  • 2016/07/13 00:39

    すみません。カスタム投稿はsingle.phpにコードを書いたらできました。

    キャンセル

+1

説明が長い割に「何がやりたくて」、「何をしたが」、「何ができなかった」のかがわかりません。
あなたが作ろうとしているサイトでやりたい事を1行20文字の箇条書きにしてください。

・書籍にやり方が載っているなら、それが一番詳しくて正しい方法です。
・WebAPIにカスタムフィールドの入力を付加情報としてリクエストを送りたいんですか?
・リクエストの結果はどうするのか、保存?表示?
・「記事を育成するテーマテンプレート」って具体的に何?
・このままだとユーザーにカスタムフィールドを入力してもらいWebAPIの結果を表示することしかできないですよ。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/07/09 13:17

    PREFに渡すのはPREF12ですね。
    また、レスポンスでエラーコード等は帰ってきていませんか?

    キャンセル

  • 2016/07/09 13:50

    post_custom(”PREF12”)と書くのですか?

    キャンセル

  • 2016/07/09 14:21

    また、phpコードを投稿ページに表示する方法が分かりません

    キャンセル

checkベストアンサー

0

ご存知かもしれませんが、ぐるなびの公式 WordPress プラグインを参考にされてはいかがですか?やりたいこのとの殆どがソースコードに記載されていると思いますよ?

WordPress のライセンスは GPL で、WordPress のテーマやプラグインの PHP ファイルも GPL ですので、参考元(パクり元)のソースコードの著作権情報をしっかり書いておけば、自身のプログラムに組み込むことが可能です。ただし、CSS や JS、画像は GPL ではない事が多いので注意してください。ライセンス守らないと・・・。

Gurunavi Restaurant Search

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/07/10 03:13

    どうでもいいですけど、post_customっていう関数名ひどいですよね。名前からしてカスタムフィールドに値をセットするようにしか捉えられないし。

    キャンセル

  • 2016/07/19 13:42

    post_custom を使っているのはあまりみかけないですね。基本 get_post_meta ですかね。もしくは $post->hoge ですかね(hoge = カスタムフィールド名)。

    キャンセル

  • 2016/08/06 13:07

    ご回答ありがとうございます。
    助かりました。

    キャンセル

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

  • ただいまの回答率 88.58%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る