/* ===================================================== * Cocoon Amazon API情報取得 * * affiliate-random-items.php側の仕様に合わせる。 * URLはAPIレスポンスの DetailPageURL のみ使用。 * タグなしの https://www.amazon.co.jp/dp/ASIN はフォールバック生成しない。 * * 管理画面の確認画面でも、フロント側と同じASIN単位の * transientキャッシュを使用する。 * これにより、確認画面を開くたびにAmazon APIを呼ばないようにする。 * ===================================================== */ if ( ! function_exists( 'usaneko_affiliate_tsv_get_amazon_item' ) ) { function usaneko_affiliate_tsv_get_amazon_item( $p_StrAsin, $p_StrTitle = '' ) { $l_StrAsin = usaneko_affiliate_tsv_get_asin( $p_StrAsin ); $l_AryResult = array( 'asin' => $l_StrAsin, 'title' => trim( (string) $p_StrTitle ), 'description' => '', 'image_url' => '', 'url' => '', 'error' => '', ); if ( $l_StrAsin === '' ) { $l_AryResult['error'] = 'ASINが正しくありません。'; return $l_AryResult; } $l_StrCacheKey = 'usaneko_affiliate_widget_amazon_' . $l_StrAsin; $l_AryCached = get_transient( $l_StrCacheKey ); if ( is_array( $l_AryCached ) && empty( $l_AryCached['error'] ) && ! empty( $l_AryCached['title'] ) && ! empty( $l_AryCached['image_url'] ) && ! empty( $l_AryCached['url'] ) ) { return $l_AryCached; } if ( ! function_exists( 'get_amazon_itemlookup_json' ) ) { $l_AryResult['error'] = 'CocoonのAmazon取得関数が見つかりません。'; return $l_AryResult; } $l_StrJson = get_amazon_itemlookup_json( $l_StrAsin ); if ( ! $l_StrJson ) { $l_AryResult['error'] = 'Amazon商品情報を取得できませんでした。'; return $l_AryResult; } $l_ObjJson = json_decode( $l_StrJson ); if ( json_last_error() !== JSON_ERROR_NONE || ! is_object( $l_ObjJson ) ) { $l_AryResult['error'] = 'Amazon商品情報の解析に失敗しました。'; return $l_AryResult; } if ( isset( $l_ObjJson->Errors ) ) { $l_AryResult['error'] = 'Amazon APIからエラーが返されました。'; return $l_AryResult; } if ( ! isset( $l_ObjJson->ItemsResult ) || ! isset( $l_ObjJson->ItemsResult->Items ) || ! is_array( $l_ObjJson->ItemsResult->Items ) || empty( $l_ObjJson->ItemsResult->Items[0] ) ) { $l_AryResult['error'] = 'Amazon商品情報に商品データがありません。'; return $l_AryResult; } $l_ObjItem = $l_ObjJson->ItemsResult->Items[0]; if ( isset( $l_ObjItem->DetailPageURL ) && $l_ObjItem->DetailPageURL !== '' ) { $l_AryResult['url'] = esc_url_raw( $l_ObjItem->DetailPageURL ); } else { $l_AryResult['error'] = 'Amazon商品URLを取得できませんでした。'; return $l_AryResult; } if ( isset( $l_ObjItem->ItemInfo ) && isset( $l_ObjItem->ItemInfo->Title ) && isset( $l_ObjItem->ItemInfo->Title->DisplayValue ) && $l_ObjItem->ItemInfo->Title->DisplayValue !== '' ) { $l_AryResult['title'] = (string) $l_ObjItem->ItemInfo->Title->DisplayValue; } if ( isset( $l_ObjItem->ItemInfo ) && isset( $l_ObjItem->ItemInfo->Features ) && isset( $l_ObjItem->ItemInfo->Features->DisplayValues ) && is_array( $l_ObjItem->ItemInfo->Features->DisplayValues ) && ! empty( $l_ObjItem->ItemInfo->Features->DisplayValues ) ) { $l_AryFeatures = array(); foreach ( $l_ObjItem->ItemInfo->Features->DisplayValues as $l_StrFeature ) { $l_StrFeature = trim( (string) $l_StrFeature ); if ( $l_StrFeature !== '' ) { $l_AryFeatures[] = $l_StrFeature; } } if ( ! empty( $l_AryFeatures ) ) { $l_AryResult['description'] = implode( "\n", $l_AryFeatures ); } } if ( isset( $l_ObjItem->Images ) && isset( $l_ObjItem->Images->Primary ) && isset( $l_ObjItem->Images->Primary->Medium ) && isset( $l_ObjItem->Images->Primary->Medium->URL ) && $l_ObjItem->Images->Primary->Medium->URL !== '' ) { $l_AryResult['image_url'] = esc_url_raw( $l_ObjItem->Images->Primary->Medium->URL ); } elseif ( isset( $l_ObjItem->Images ) && isset( $l_ObjItem->Images->Primary ) && isset( $l_ObjItem->Images->Primary->Large ) && isset( $l_ObjItem->Images->Primary->Large->URL ) && $l_ObjItem->Images->Primary->Large->URL !== '' ) { $l_AryResult['image_url'] = esc_url_raw( $l_ObjItem->Images->Primary->Large->URL ); } elseif ( isset( $l_ObjItem->Images ) && isset( $l_ObjItem->Images->Primary ) && isset( $l_ObjItem->Images->Primary->Small ) && isset( $l_ObjItem->Images->Primary->Small->URL ) && $l_ObjItem->Images->Primary->Small->URL !== '' ) { $l_AryResult['image_url'] = esc_url_raw( $l_ObjItem->Images->Primary->Small->URL ); } else { $l_AryResult['error'] = 'Amazon商品画像を取得できませんでした。'; return $l_AryResult; } if ( $l_AryResult['title'] === '' ) { $l_AryResult['error'] = 'Amazon商品名を取得できませんでした。'; return $l_AryResult; } set_transient( $l_StrCacheKey, $l_AryResult, 12 * HOUR_IN_SECONDS ); return $l_AryResult; } } チョコボ | ページ 3 | うさねこ散歩

チョコボ

チョコボ

FF14 バトラー・バード【チョコボ装甲】

FF14のチョコボ装甲「バトラー・バード」の入手方法と見た目をまとめています。オンラインストアで購入でき、スーツとモノクルが特徴の執事風デザインなどをSSで確認できます。
チョコボ

FF14 ファーイースト・バード 【チョコボ装甲】

FF14のチョコボ装甲「ファーイースト・バード」の入手方法と見た目をまとめています。オンラインストアで購入でき、東方風の衣装デザインや上品な装飾の特徴を確認できます。
チョコボ

FF14 ナタ・バード 【チョコボ装甲】

FF14のチョコボ装甲「ナタ・バード」の入手方法と見た目をまとめています。オンラインストアで購入でき、赤いフードやマント、車輪のように見える足元のデザインを確認できます。
チョコボ

FF14 ハーデス・バード 【チョコボ装甲】

FF14のチョコボ装甲「ハーデス・バード」の入手方法と見た目をまとめています。極ハーデス討滅戦で入手できる素材やクラフター製作条件、ハーデスらしい迫力あるデザインの特徴を確認できます。
FF11

FF11 マウント取得クエスト ライドオン!チョコボ乗り免許証

クエスト「ライドオン!」クエスト発生条件などうさちゃんクエスト「ライドオン!」場所: ジュノ上層(G-7) チョコボ宿舎の横こちらのクエストの発生条件はチョコボ乗り免許証所持(レベル20以上クエスト)...
チョコボ

FF14 ラーヴァナ・バード 【チョコボ装甲】

FF14のチョコボ装甲「ラーヴァナ・バード」の入手方法と見た目をまとめています。甲冑師による製作装甲で、昆虫のような触角や羽、発光する目など特徴的なデザインを確認できます。
チョコボ

FF14 ニーズヘッグ・バード 【チョコボ装甲】

FF14のチョコボ装甲「ニーズヘッグ・バード」の入手方法と見た目をまとめています。ロックボックス鑑定やクラフター製作、極ニーズヘッグ征竜戦で入手できる素材の邪竜の鱗、特徴的な外観を確認できます。
チョコボ

FF14 ビスマルク・バード 【チョコボ装甲】

FF14のチョコボ装甲「ビスマルク・バード」の入手方法と見た目をまとめています。ロックボックス鑑定や素材「ビスマルクの角」を使った製作方法、マーケットボード購入や外観の特徴を確認できます。
サブクエスト

FF14 ボズヤン・バード 【チョコボ装甲】

FF14のチョコボ装甲「ボズヤン・バード」の入手方法をまとめています。ザトゥノル高原の高原のロックボックス鑑定で入手でき、マーケットボード取引にも対応。見た目の特徴もスクリーンショット付きで紹介します。
チョコボ

FF14 ダイヤモンド・バード 【チョコボ装甲】

※パッチ5.5、「ウェルリト戦役」の内容について触れている部分があります。ネタバレにご注意くださいませ。FF14 【5.5】極ダイヤウェポン捕獲作戦 遊んでますチョコボ装甲 ダイヤモンド・バードうさち...
チョコボ

FF14 エメラルド・バード 【チョコボ装甲】

FF14のチョコボ装甲「エメラルド・バード」の入手方法と見た目をまとめています。極エメラルドウェポン破壊作戦で入手できる素材を使ったクラフター製作や、特徴のある外観を確認できます。
チョコボ

FF14 ツクヨミ・バード 【チョコボ装甲】

FF14のチョコボ装甲「ツクヨミ・バード」の入手方法と見た目をまとめています。南方ボズヤ戦線のロックボックス鑑定やクラフター製作、紫を基調にした華やかな外観や細かな装飾を確認できます。
チョコボ

FF14 シンリュウ・バード 【チョコボ装甲】

FF14のチョコボ装甲「シンリュウ・バード」の入手方法と見た目をまとめています。ロックボックス鑑定やクラフター製作で入手でき、神龍をモチーフにした派手で力強い外観の特徴を確認できます。