2017-01-27 10 views
4

私はwoocommerce APIを使用して手動で注文を追加しています。奇妙なテキストを特定の単語に変換する方法

私はバリエーションを手動で注文しました。管理側の編集順ページで良好です。

今、問題は、ポリラインプラグインを使用しているサイトです。

そこには2つの言語があります。私は正常に英語で注文を追加することができます。

しかし、別の言語(アラビア語)で商品を追加しようとしましたが、これは、奇妙なテキスト形式でいくつかの注文の詳細を返します。私のAPIではそれが返されます:編集オーダーページで

"product_variation_details": "%d8%a7%d9%84%d8%ad%d8%ac%d9%85: صغير" 

を、適切な方法で示していますenter image description here

私はAPIに注文の詳細を取得するためのコードの下に使用している:

$variation_id = $single_items['item_meta']['_variation_id'][0]; 
if ($variation_id != 0) { 
    $variation = wc_get_product($variation_id);     
    $product_variation_details = wc_get_formatted_variation($variation->get_variation_attributes(), true); 
} 

私が検索を持っていますたくさんありますが、より良い解決策を得ることはできません。どんな援助も暴走するだろう。前もって感謝します。

+0

正確な質問は何ですか?製品名が正しく印刷されたら、どこでデコードする必要がありますか? – yivi

+0

@yivi私はAPIに取り組んでいます。その時、私はこの問題に直面しました。 – vrajesh

+1

あなたがここで何を求めているのかは不明です。何が起こると予想されているのか、そして起こったこととどのように違うのかを明確にすることができますか?私はあなたのためにこれを修正するための十分な情報がここにあるかどうかわからない。この問題は、あなたが含まれていないコードの可能性が高いです。 – Rich

答えて

9

デコードが行われているようです。 Urldecode

私は与えられた文字列を取り、それを印刷していた場合、それは、これを返すURLデコード:

print urldecode("%d8%a7%d9%84%d8%ad%d8%ac%d9%85"); 
الحجم 

私はこれが

2

であなたのif内部のすべてを交換してみてください役に立てば幸い:

$variation = wc_get_product($variation_id); 
$variation_attributes = $variation->get_variation_attributes(); 
$variation_attributes_decoded = array(); 

foreach ($variation_attributes as $name => $value) { 
    $decoded_name = rawurldecode($name); 
    $variation_attributes_decoded[ $decoded_name ] = $value; 
} 

$product_variation_details = wc_get_formatted_variation($variation_attributes_decoded, true); 

これはテストされていません。

$variation_list[] = wc_attribute_label(str_replace('attribute_', '', $name)) . ': ' . rawurldecode($value); 

あなたが見ることができるように、それは$valueなく$nameを復号化しています:

これが問題のテキストを出力しているwc_get_formatted_variation()からのラインがあります。私の解決策は、$nameを先にデコードする必要があります。

編集:コードエラーが修正されました。

関連する問題