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

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

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

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

PHP

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

2302閲覧

WordPressにてDMM APIの利用時、keyword設定が分かりません。

colaman

総合スコア7

WordPress

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

PHP

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2019/08/04 16:07

編集2019/08/06 04:53

前提・実現したいこと

ワードプレスにてブログを運営しています。
女優さんに関する記事を書いたときなど、
記事下にDMMのAPIを利用して該当女優の商品一覧を出力したいのですが、
"kwyword"の設定ができずに困っています。

例えばAという女優さんの記事を書いたときには、Aの商品情報、Bという女優さんに関する記事を書いたときには、Bの商品情報を出力されるようにしたいです。

また同じ女優さんであっても違う名義での商品情報も併せて、その下に出力されるようにしたいのです。

質問がヘタですいません。追記します。
例えば、下記のソースコード(うまくいきませんが)をsingle.phpに記入た上で
記事を投稿するときに、タグAを入れるとタグAの商品情報、さらに
タグBを追加すると、タグAの商品情報の下にタグBの商品情報も出力されるというのが理想です。

ただ、タグにこだわっているのではなくカスタムフィールドを利用することで
上記の内容が実現できるのであればそれでも全く問題はありません。

FANZA商品は問題あるかと思い商品は違いますが、こんなイメージです。
イメージ説明

発生している問題・エラーメッセージ

直接、下記のコードの$keyword = "キーワード";のキーワード部分にを入力(女優名)を記入すれば表示されますが、それでは、記事ごとに用意しなくてはけません。

ですので、$keyword = "キーワード";のキーワード箇所に(タグ名の出力タグ?)
タグ入力による分岐ができれば良いかと思い

<?php $posttags=get_the_tags();if($posttags){foreach($posttags as $tag){echo ''.$tag->name.'';}} ?>

を記入してみたのですが、該当部分が何も表示されません。

何がしかのエラーがあるようです。
あまりにも初心者ゆえなにが問題なのかよくわかっていませんが解決できるものなのでしょうか?

キーワードとしてのタグ名を取得、表示されれば問題ないように思われるのですが...

エラーメッセージ
何も表示されません。
教えていただいたURLを参考(本当にありがとうございます。)にデバッグモードで確認したところ
Notice: Undefined variable:
と表示され定義していない変数を使おうとしたときに発生するエラー。
であるようです。

該当のソースコード

<?php $api_id = "xxx"; $aff_id = "xxx"; $site = "FANZA"; $service = "digital"; $keyword = "キーワード"; $hits = "10"; $format = "xml"; $url = "https://api.dmm.com/affiliate/v3/ItemList?api_id={$api_id}&affiliate_id={$aff_id}&site={$site}&service={$service}&keyword={$keyword}&hits={$hits}&output={$format}"; $xml = simplexml_load_file( $url ); $item_list = $xml->result->items->item; foreach( $item_list as $item ){ $title = $item->title; $image = $item->imageURL->small; $link = $item->affiliateURL; $output .= '<div><a href="' . esc_url( $link ) . '" target="_blank">'; $output .= '<p>' . esc_html( $title ) . '</p>'; $output .= '<img src="' . esc_url( $image ) . '" alt="' . esc_attr( $title ) . '">'; $output .= '</a></div>'; } echo $output; ?> `

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

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

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

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

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

kei344

2019/08/05 14:37

キーワードを各記事のどこに入れて使用されるのでしょう。「タグ」でしょうか「カスタムフィールド」でしょうか。また、デバッグモードでエラーを確認してみてください。 http://mignonstyle.com/debug-mode/
guest

回答1

0

ベストアンサー

キーワードさえ入れば読み込みができるのであれば。(APIによっては1秒間の読み込み回数とか決まっていたりするので、使用は丁寧に確認してください)

PHP

1<?php 2function my_dmm( $key ) { 3 if ( empty( $key ) ) return ''; 4 $api_id = "xxx"; 5 $aff_id = "xxx"; 6 $site = "FANZA"; 7 $service = "digital"; 8 $keyword = $key; 9 $hits = "10"; 10 $format = "xml"; 11 12 $url = "https://api.dmm.com/affiliate/v3/ItemList?api_id={$api_id}&affiliate_id={$aff_id}&site={$site}&service={$service}&keyword={$keyword}&hits={$hits}&output={$format}"; 13 14 $xml = simplexml_load_file( $url ); 15 16 $item_list = $xml->result->items->item; 17 foreach( $item_list as $item ){ 18 $title = $item->title; 19 $image = $item->imageURL->small; 20 $link = $item->affiliateURL; 21 $output .= '<div><a href="' . esc_url( $link ) . '" target="_blank">'; 22 $output .= '<p>' . esc_html( $title ) . '</p>'; 23 $output .= '<img src="' . esc_url( $image ) . '" alt="' . esc_attr( $title ) . '">'; 24 $output .= '</a></div>'; 25 } 26 return $output; 27} 28 29$posttags = get_the_tags(); 30if ( $posttags ) { 31 foreach ( $posttags as $mytag ) { 32 echo my_dmm( $mytag->name ); 33 } 34} 35?>

投稿2019/08/06 12:51

kei344

総合スコア69407

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

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

colaman

2019/08/06 13:42

ご回答いただき本当に本当にありがとうございます。 早速ご回答いただいたソースをワードプレスにいれてみたところ問題なく表示させることができました。やっと問題が解決できてうれしいいです。 >(APIによっては1秒間の読み込み回数とか決まっていたりするので、使用は丁寧に確認してください) また勉強が必要になりそうですが、出力されたデータをキャッシュして負荷がかからないようにしてみようかと考えております。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問