2017-02-18 24 views
2

私は注文データのプレーンな出力を生成しようとしています。最初のステップはWP_QUery(おそらく)ですので、このコードを記述します。Woocommerce wp_query IDで注文を取得

$args = array (

    'post_type' =>'shop_order', 
    'posts_per_page' => -1, 
    'post_status' => 'any', 
    //'p' => $post_id, 

);  

$order_query = new WP_Query($args); 

while ($order_query->have_posts()) : 
    $order_query->the_post(); 

    echo the_ID(); 
    echo ' : '; 
    the_title(); 
    echo '<br/><br/>'; 

endwhile; 

それ親切な製品すべての注文のリスト私は$post_idが有効なポストIDで'p' => $post_idを設定した場合、クエリは何も返しません。

なぜ、ハイブの心ですか?

また、次のようなレイアウトのプレーンページを作成するWoocommerceの方法があります。

Order ID: 836 
Order Status: .... 

私はWP_Queryは明白な方法だろうと仮定が、それはwoocommerce注文データを取得するように表示されているものが、簡単です。 1つの注文の注文データを取得するために

+0

バックグラウンドとして、私はRomancartショッピングソリューションからの電子メールを解析するFilemakerデータベースを持っています。もちろん、Woocommerceから注文電子メールを解析するが、私は少しclevererとウェブページを介してデータを渡すだろうと思った。 ESSは、もちろん、最良のソリューションですが、プログラミングも非常に集中しています。 –

+0

これは役に立ちます:http://stackoverflow.com/a/28847572/1182891 –

答えて

4

アップデート2

、あなたはWP_queryを必要としません。あなたは直接使用することができます。

$order = wc_get_order($order_id); 
$order->id; // order ID 
$order->post_title; // order Title 
$order->post_status; // order Status 
// getting order items 
foreach($order->get_items() as $item_id => $item_values){ 
    // Getting the product ID 
    $product_id = $item_values['product_id']; 
    // .../... 
} 

アップデート1

あなたはこれを試してみてください、array_keys(wc_get_order_statuses()と同じようにあなたはすべての注文のステータスを取得し、'numberposts' => -1,すべての既存のオーダーとなります。

ここでは別の方法(WP_queryなしか、WP_query配列にthoses引数を使用することができます)です:この質問に対する厳格な答えは'post__in' => array($post_id)

'p'=>$post_id'に変更され

$customer_orders = get_posts(array( 
    'numberposts' => -1, 
    'post_type' => 'shop_order', 
    'post_status' => array_keys(wc_get_order_statuses()) 
)); 

// Going through each current customer orders 
foreach ($customer_orders as $customer_order) { 

    // Getting Order ID, title and status 
    $order_id = $customer_order->ID; 
    $order_title = $customer_order->post_title; 
    $order_status = $customer_order->post_status; 

    // Displaying Order ID, title and status 
    echo '<p>Order ID : ' . $order_id . '<br>'; 
    echo 'Order title: ' . $order_title . '<br>'; 
    echo 'Order status: ' . $order_status . '<br>'; 

    // Getting an instance of the order object 
    $order = wc_get_order($order_id); 

    // Going through each current customer order items 
    foreach($order->get_items() as $item_id => $item_values){ 
     // Getting the product ID 
     $product_id = $item_values['product_id']; 
     // displaying the product ID 
     echo '<p>Product ID: '.$product_id.'</p>'; 
    } 
} 
+0

'' post_status '=>' any''はトリックを行い、すべての投稿を返すことは問題ではありませんでした。 1つの投稿を返すことが私の目標だった、上記の私の答えを参照してください。しかし、とにかく答える時間をとってくれてありがとう。 –

0

...しかし、本当の答えは、誰もがこの道を踏みにじるべきである、電子メールを解析することが非常に簡単である、woocommerceがあなたのための仕事のほとんどをしているということです。道に沿って他の落書きがあります。 1.投稿は保護されており、注文の注釈は抜粋に表示されているので表示できません(私はそれらをメタに移すことができますが...)。2.注文項目はコメント内にあり、ループ処理して有意義なものにする必要があります出力するので、電子メールを直接解析することもできます。

+0

WoocommerceデータをFilemakerに移動することは、単一のWoocommerceオーダーが相互に関連したテーブルエントリであるという事実は、あらゆる解決策が複雑になることを意味し、注文電子メールはそこにある順序から完全なデータセットの最良の順序付けられた要約。 –

+0

あなたの質問は非常に不明...私はあなたが1つの注文を呼び出そうとしていたことを理解していませんでした。 '$ order = wc_get_order($ order_id);' ...クエリーを必要とせずに 'print_r($ order)'すれば、あなたはあなたが永遠に得ることができます...私は自分の答えを2回更新しました。 – LoicTheAztec

関連する問題