我在WooCommerce购物车中有两个不同的产品。一个是票,另一个是在用户上传文件之前必须支付的费用(由我创建的重力表处理)。
目前,如果我将链接发送到订单已接收页面上带有重力表格的页面,如果有人只购买了一张票,他们就会看到这个链接,这会让人感到困惑。
根据购买的产品,购买完成后,是否有办法获得唯一的确认页?
如果没有,是否有条件标签或某种钩子或过滤器,如果购买“费用产品”(可能基于产品ID或类别ID),则只显示订单接收页面上的重力表格的链接?
我确实找到了这段代码:
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并强制重定向页面,它“工作”,但它会破坏页面并导致在结帐页面中嵌入一些奇怪的网站。
答案 0 :(得分: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语句自定义这个代码,这些语句根据购买的产品重定向到不同的目标页面!希望这有助于某人!