/* =====================================================
* 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;
}
}
Warning: Cannot modify header information - headers already sent by (output started at /home/nextymt/next-innovation-fuk.com/public_html/wp-content/themes/cocoon-child-master/affiliate/widget/affiliate-tsv-admin.php:1) in /home/nextymt/next-innovation-fuk.com/public_html/wp-includes/feed-rss2.php on line 8
不揮発性錬金薬 | うさねこ散歩
https://next-innovation-fuk.com
FF14・雀魂・ガジェット・モニターの雑記サイト
Tue, 17 Jan 2023 01:52:23 +0000
ja
hourly
1
https://wordpress.org/?v=6.9.4
https://next-innovation-fuk.com/wp-content/uploads/2025/12/usaneko_logo_tight_560-1-150x150.png
不揮発性錬金薬 | うさねこ散歩
https://next-innovation-fuk.com
32
32
-
FF14 パッチ6.3「インダガトル」クラフター・ギャザラー装備 (紫貨幣・白貨幣・マクロ)
https://next-innovation-fuk.com/2023/01/17/ff14-%e3%83%91%e3%83%83%e3%83%816-3%e3%80%8c%e3%82%a4%e3%83%b3%e3%83%80%e3%82%ac%e3%83%88%e3%83%ab%e3%80%8d%e3%82%af%e3%83%a9%e3%83%95%e3%82%bf%e3%83%bc%e3%83%bb%e3%82%ae%e3%83%a3%e3%82%b6%e3%83%a9/
Tue, 17 Jan 2023 01:50:00 +0000
https://next-innovation-fuk.com/?p=85394
▼続きはこちら
https://next-innovation-fuk.com/2023/01/17/ff14-%e3%83%91%e3%83%83%e3%83%816-3%e3%80%8c%e3%82%a4%e3%83%b3%e3%83%80%e3%82%ac%e3%83%88%e3%83%ab%e3%80%8d%e3%82%af%e3%83%a9%e3%83%95%e3%82%bf%e3%83%bc%e3%83%bb%e3%82%ae%e3%83%a3%e3%82%b6%e3%83%a9/]]>
-
FF14 暁月6.1「不揮発性錬金薬」金策にもなる!? ギャザクラ装備「パクトメーカー」製作に必要数は?
https://next-innovation-fuk.com/2022/04/15/ff14-%e6%9a%81%e6%9c%886-1%e3%80%8c%e4%b8%8d%e6%8f%ae%e7%99%ba%e6%80%a7%e9%8c%ac%e9%87%91%e8%96%ac%e3%80%8d%e9%87%91%e7%ad%96%e3%81%ab%e3%82%82%e3%81%aa%e3%82%8b-%e3%82%ae%e3%83%a3%e3%82%b6%e3%82%af/
Fri, 15 Apr 2022 06:17:27 +0000
https://next-innovation-fuk.com/?p=66951
▼続きはこちら
https://next-innovation-fuk.com/2022/04/15/ff14-%e6%9a%81%e6%9c%886-1%e3%80%8c%e4%b8%8d%e6%8f%ae%e7%99%ba%e6%80%a7%e9%8c%ac%e9%87%91%e8%96%ac%e3%80%8d%e9%87%91%e7%ad%96%e3%81%ab%e3%82%82%e3%81%aa%e3%82%8b-%e3%82%ae%e3%83%a3%e3%82%b6%e3%82%af/]]>