2017-10-13 6 views
0

jsonファイルのデータをWordPressサイトに読み込もうとしています。私がクロールしたサイトの製品の名前と一致するものから価格を取得したいと考えています。私はwordpressの製品ページに追加した商品属性と一致する商品の名前が必要です。名前が追加した属性と一致する場合は価格を取得します。以下のコードは部分的に機能しましたが、何らかの理由で属性の呼び出しが機能しません。何かアドバイス?PHPでjsonデータを取得しようとしています

$str = file_get_contents('/run_results_apmex.json'); 

// decode JSON 
$json = json_decode($str, true); 

// default value 
$coinPrice = "No results found"; 
$product_attribute = wc_get_product_terms($product->id , 'pa_apmex'); 
// loop the json array 
foreach($json['coin'] as $value){ 
    // check the condition 
    if($value['name'] == trim($product_attribute)){ 
     $coinPrice = $value['price']; // get the price 
     break; // exit the loop 
    } 
} 

echo $coinPrice; 
+0

あなたはjsonが有効ではないと確信しています。http://jsonlint.com/ –

+0

jsonが有効です。ちょうど確かにそれをもう一度チェックしました。 – AaronS

+0

あなたはvar_dump($ str)を追加できますか?私はfile_get_contentsの後に私は親ノードが確実であることを示したい、そして長くないならば。 –

答えて

0

私は

$product_attribute = '2017 Canada 1 oz Gold Maple Leaf BU'; 

$product_attribute = wc_get_product_terms($product->id , 'pa_apmex');

あなたの関数呼び出しを置き換えると、コード

$str = file_get_contents('run_results_apmex.json'); 

// decode JSON 
$json = json_decode($str, true); 

// default value 
$coinPrice = "No results found"; 
$product_attribute = '2017 Canada 1 oz Gold Maple Leaf BU'; 
// loop the json array 
foreach ($json['coin'] as $value) { 
    // check the condition 
    if ($value['name'] == trim($product_attribute)) { 
     $coinPrice = $value['price']; // get the price 
     break; // exit the loop 
    } 
} 

echo $coinPrice; 

を走ってきたエコーは "$ 1,316.09" を表示しました。だから、jsonは正常に動作しているようです。私はvar_dump wc_get_product_terms($ product-> id、 'pa_apmex')とそれが何を返して参照してください。

+0

ありがとうございました。私はそれをいくつかの方法で試してみたところ、うまくいきませんでした。私がvar_dumpを使って "array(0)"を取得すると、それは本当に珍しいことです。私のオプションを開くのを助けるために私はカスタマイズされたカスタムフィールドをインストールし、$ product_attribute = the_field( 'apmex_vendor_name')を作成しようとしました。そのフィールドの値を取得しますが、フロントエンドに「結果が見つかりません」の横に表示されます。これはすべてかなり奇妙です。 – AaronS

関連する問題