Php Woocommerce-根据产品属性和付款方式在感谢页面上打印文本
我的问题是: -根据产品属性和付款方式在感谢页面上打印文本 我有一个完美的代码:Php Woocommerce-根据产品属性和付款方式在感谢页面上打印文本,php,wordpress,woocommerce,hook,hook-woocommerce,Php,Wordpress,Woocommerce,Hook,Hook Woocommerce,我的问题是: -根据产品属性和付款方式在感谢页面上打印文本 我有一个完美的代码: add_action( 'woocommerce_thankyou', 'show_custom_text_by_variation_id', 1 ); function show_custom_text_by_variation_id( $order_id ) { $order = wc_get_order( $order_id ); foreach( $order->get_items(
add_action( 'woocommerce_thankyou', 'show_custom_text_by_variation_id', 1 );
function show_custom_text_by_variation_id( $order_id ) {
$order = wc_get_order( $order_id );
foreach( $order->get_items() as $item ) {
// Add whatever variation id you want below here.
if ( isset( $item[ 'variation_id' ] ) && $item[ 'variation_id' ] == 9647 ) {
echo '<br/>Example text - Thank you for buy VARIABLE A-9647 !<br/>';
}
if ( isset( $item[ 'variation_id' ] ) && $item[ 'variation_id' ] == 9648 ) {
echo '<br/>Example text - Thank you for buy VARIABLE B-9648 !<br/>';
}
}
}
add_action('woocommerce_thankyou','show_custom_text_by_variation_id',1);
函数按变量id($order\U id)显示自定义文本{
$order=wc\u get\u order($order\u id);
foreach($order->get_items()作为$item){
//在下面添加您想要的任何变体id。
如果(isset($item['variation\u id'])和&$item['variation\u id']==9647){
回显“
示例文本-感谢您购买变量A-9647!
”;
}
如果(isset($item['variation\u id'])和&$item['variation\u id']==9648){
回显“
示例文本-感谢您购买变量B-9648!
”;
}
}
}
现在,我想返回另一个文本,仅当产品选择的条件与支付类型(例如bacs)一起呈现时
示例A:
- 购买的产品-变量9647
- 选择的付款方式-Bacs
- 示例文本-感谢您购买变量A-9647-使用Bacs付款方式李>
- 购买的产品-变量9648
- 选择的付款方式-Bacs
- 示例文本-感谢您购买变量B-9648-使用Bacs付款方式李>
提前谢谢 使用:
$order->get_payment_method()代码>
function action\u woodcommerce\u thankyou($order\u id){
//获取$order对象
$order=wc\u get\u order($order\u id);
//获取项目
$items=$order->get_items();
//设置变量
$found=false;
//设置变量
$output='';
//环路
foreach($items作为$item){
//在下面添加您想要的任何变体id。
如果(isset($item['variation\u id'])和&$item['variation\u id']==9647){
$output='谢谢您购买变量A-9647';
$found=true;
打破
}
如果(isset($item['variation\u id'])和&$item['variation\u id']==9648){
$output='谢谢您购买变量B-9648';
$found=true;
打破
}
}
//获取付款方式
$payment_method=$order->get_payment_method();
//付款方式=basc&found=真
如果($payment_method=='bacs'&&&$found){
$output.='您的付款是BACS';
}
//打印结果
echo$输出;
}
增加行动('woocommerce\u Thankyu','action\u woocommerce\u Thankyu',10,1);
编辑
在页面顶部、订单详细信息之前显示文本
您好7uc1f3r-您的代码很好。是我把自己解释错了。如果他们选择BACS付款,感谢文本将是“感谢您购买变量,您的付款是BACS”,而如果他们选择其他付款方式,例如paypal或stripe,则文本将是“感谢您购买变量”。我认为其他的支付方式是什么并不重要,重要的是条件只会在bacs的情况下发生变化。我希望我能解释清楚。谢谢,请使用“woocommerce\u Thankyu\u order\u received\u text”而不是“woocommerce\u Thankyu”,请参见编辑此处它在这两种情况下都有效,请参见附件与同一挂钩的冲突特定于您的设置或网站,我的回答是一般性的,以便它也可用于stackoverflow上的其他用户。因此,在我看来,答案不应该被修改,因为它通常是有效的。如果你有其他问题,不要编辑我的答案,只要打开一个新的帖子。非常感谢。
function change_order_received_text( $str, $order ) {
// Get items
$items = $order->get_items();
// Set variable
$found = false;
// Loop
foreach ( $items as $item ) {
// Add whatever variation id you want below here.
if ( isset( $item[ 'variation_id' ] ) && $item[ 'variation_id' ] == 9647 ) {
$str = 'Thank you for buy VARIABLE A-9647';
$found = true;
break;
}
if ( isset( $item[ 'variation_id' ] ) && $item[ 'variation_id' ] == 9648 ) {
$str = 'Thank you for buy VARIABLE B-9648';
$found = true;
break;
}
}
// Get payment method
$payment_method = $order->get_payment_method();
// Payment method = basc & found = true
if ( $payment_method == 'bacs' && $found ) {
$str .= ' YOUR PAYMENT IS BACS';
}
return $str;
}
add_filter('woocommerce_thankyou_order_received_text', 'change_order_received_text', 10, 2 );