2017-05-12 12 views
1

私は、特定のページにリンクするオブジェクトからURLを作成することができるWooCommerce用の小さなプラグインに取り組んでいます。そのページはPHP GET変数を考慮に入れ、技術的な図を生成します。私のテーマの「管理者-新-order.php」ページでは、私は、電子メールの注文表が作成される場所の上に次のコードを追加しました:完全注文からWooCommerce製品属性を取得しますか?

$ordered_items = $order->get_items(); 
foreach ($ordered_items as $item) { 
$product_name = $item['name']; 
    $product_id = $item['product_id']; 
    $product_variation_id = $item['variation_id']; 

    if($product_id == "1388") 
    { 
     if ($product_variation_id) { 
     $product = wc_get_product($item['variation_id']); 
     var_dump($product->get_attributes()); 
     // Get the attributes 
     // Process the attributes 
     // Create URL 
     // Echo URL 
     } 
    } 

} 

私は上記にエコーを入れた場合、それが表示されます電子メールの適切な場所に、私はコードが期待通りに実行されていることを知っている。

リンクはidが "1388"の製品でのみ生成され、テストでも期待通りに実行されます。商品ID「1388」は、顧客が材料や形状などを選択できる変数製品で、測定価格計算ツールのプラグインを使用してユーザーが必要なサイズを設定できるようにしています。

問題のコード行が存在する場合

echo $product->get_attributes(); 

を言うライン内にある順序と順序が通過しませんにしようとしたとき、私は内部サーバーエラーを取得します。

私は製品の外から選択した属性を取得しようとしているので、それらをスプライスしてURLを生成し、技術的な図を生成するページに移動させます。電子メールのテーブルには設定された属性が含まれていますが、WooCommerceがどこでどのようにこれを実行しているのかわからないため、可能です。

正しい方向へのプッシュは大変ありがとうございます。ありがとうございます。

EDIT:Reigelが示唆したように、私は私のブロックに次のコードを修正しています

このののvar_dumpは、例えば、この生成
$product = wc_get_product($item['variation_id']); 
    var_dump($product->get_attributes()); 

{ ["material"]=> array(6) { ["name"]=> string(8) "Material" ["value"]=> string(15) "Steel | Plastic" ["position"]=> string(1) "0" ["is_visible"]=> int(1) ["is_variation"]=> int(1) ["is_taxonomy"]=> int(0) } 

あなたが見ることができるように、材料値は "Steel | Plastic"ですので、私はここでSteelを選びましたので、その値を取得したいと思います。ユーザーはこのような何か、それを試してみてください

+0

まあ、私はそれがために '$製品は=新しいWC_Product($アイテム[ 'variation_id'])のことだと思います;'。 '$ product = 'Variant_id'])' – Reigel

+0

@Reigelは返信してくれてありがとう、私は配列を元に戻していますが、もしvar_dumpすれば、それはすべての可能な属性の配列です'[" value "] => string(15)" Steel | Plastic "'が入っています。私はユーザーが注文のために選択した資料を入手する必要があります。ありがとうございます – Jordan

+0

あなたのWooCommerceのバージョンは? – Reigel

答えて

1

を選択1:

$ordered_items = $order->get_items(); 
foreach ($ordered_items as $item) { 
    $product = $order->get_product_from_item($item); 
    var_dump($product->get_attributes()); 
} 
+1

残念ながら、これはまだその注文に特有の属性のない一般的な配列を出力しています。設定されたURLを作成できるようにユーザーが選択した内容を知りたいです {{"material"] => array(6){["name"] => string(8) "Material" ["is_variation"] => int(1)["is_visible"] => int(1) 1)["is_taxonomy"] => int(0)} ' – Jordan

関連する問題