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付款方式

例B:

  • 购买的产品-变量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 );