2014-01-30 49 views
2

我在WooCommerce購物車中有兩種不同的產品。一個是票,另一個是在用戶上傳文件之前必須支付的費用(由我創建的重力表格處理)。有條件WooCommerce確認/訂單接收頁面基於產品或類別?

目前,如果我在Order Order頁面上將Gravity表格鏈接到頁面,如果有人購買了一張票,他們會看到這個鏈接,這會讓人感到困惑。

基於購買的產品購買完成後,是否有方法可以擁有唯一的確認頁?

如果沒有,是否有條件標籤或某種鉤子或過濾器,如果購買了「收費產品」(可能基於產品ID或類別ID),它們只會在Order Received頁面上顯示Gravity Form的鏈接)?

我發現這個代碼片段:

https://sozot.com/how-to-hook-into-woocommerce-to-trigger-something-after-an-order-is-placed/

但當我嘗試這個辦法:

add_action('woocommerce_payment_complete', 'custom_process_order', 10, 1); 
function custom_process_order($order_id) { 
    $order = new WC_Order($order_id); 
    $myuser_id = (int)$order->user_id; 
    $user_info = get_userdata($myuser_id); 
    $items = $order->get_items(); 
    foreach ($items as $item) { 
    if ($item['product_id']==154) { 
echo '<h3>If you are submitting a script, please <a href="http://www.ashlandnewplays.org/wp/submit-a-script/step-2/">click here to submit your script</a>.</h3>'; 
     } 
    } 
    return $order_id; 
} 

沒有被顯示的訂單詳細信息屏幕上。奇怪的是,如果我嘗試使用wp_redirect並強制重定向頁面,它「起作用」,但它會打破頁面並導致網站在結帳頁面中出現一些奇怪的嵌入。

回答

1

經過這個不斷的毆打,我終於找到了我在找的東西,所以我想我會發布它。在我的情況下,我想通過指向表單的鏈接來定製訂單明細/確認頁面,但僅限於購買某種產品時。

如果你想類似的東西,把這個在order_details.php模板:

global $woocommerce; 

$order = new WC_Order($order_id); 

/* This two lines above should already exist, but I have them here so you can 
see where to put the code */ 

foreach($order->get_items() as $item) { 
    $_product = get_product($item['product_id']); 
    if ($item['product_id']==154) { 
     // Do what you want here..replace the product ID with your product ID 
     } 
    } 

我還測試了這款由if語句中插入wp_redirect,它似乎工作的偉大,所以我想你可以根據購買的產品,使用一堆if/elseif語句自定義此代碼,這些語句會重定向到不同的着陸頁!希望這可以幫助別人!

+0

更新woocommerce時,這不會被覆蓋嗎?也許它應該是更好的,如果你在你的主題上覆蓋這些:https://www.sellwithwp.com/customizing-woocommerce-order-emails/ – zJorge

相關問題