在 WooCommerce 谢谢页面上显示自定义复选框字段状态

Display custom checkbox field state on WooCommerce thankyou page

根据我之前的问题+问题的答案

我在 WooCommerce 结账页面上有一个额外的复选框,但是当订单完成后,我在感谢页面上看不到额外的字段。 当复选框被选中或未选中时,我的复选框将值 10 保存在 meta_data

$order->update_meta_data( 'ritiro_sede', $value );

如果复选框被选中,我想看到单词 SI,如果复选框未被选中,我想看到单词 NO,但是这个功能不起作用:

有人知道哪里出了问题吗?

add_action( 'woocommerce_thankyou', 'my_custom_checkout_field_display_order_data_ritiro_sede', 10, 1 );
add_action( 'woocommerce_view_order', 'my_custom_checkout_field_display_order_data_ritiro_sede', 10, 1 );
function my_custom_checkout_field_display_order_data_ritiro_sede( $order ){ 
    $ritiro_sede = get_post_meta( $order_id, 'ritiro_sede', true );
    if( $ritiro_sede == 1 )
        echo '<p><strong>Ritiro In sede: </strong> <span style="color:red;">SI</span></p>';
    if( $ritiro_sede == 0 )
        echo '<p><strong>Ritiro In sede: </strong> <span style="color:red;">NO</span></p>';
    //echo '<p>'. __('Ritiro in Sede: ') . get_post_meta($order->get_id(), 'ritiro_sede', true .'</p');
    //echo '<p>'. __('Ritiro in Sede: ','theme_name') . get_value($order->get_the_id(), 'ritiro_sede', true .'</p>');       
}

1) 你会犯的第一个错误是使用 $order 作为参数,而这应该是 $order_id

所以这个

function my_custom_checkout_field_display_order_data_ritiro_sede( $order ){ 

变成

function my_custom_checkout_field_display_order_data_ritiro_sede( $order_id ){

2) 第二个错误是你使用的是$order_id,而它没有定义

$ritiro_sede = get_post_meta( $order_id, 'ritiro_sede', true );

此问题现已通过步骤 1 的调整自动解决


所以要回答你的问题,你会得到:

function my_custom_checkout_field_display_order_data_ritiro_sede( $order_id ) {
    // Get an instance of the WC_Order object
    $order = wc_get_order( $order_id );
    
    // Get meta
    $ritiro_sede = $order->get_meta('ritiro_sede');
    
    // Compare
    if ( $ritiro_sede == 1 ) {
        echo '<p><strong>Ritiro In sede: </strong> <span style="color:green;">SI</span></p>';
    } else {
        echo '<p><strong>Ritiro In sede: </strong> <span style="color:red;">NO</span></p>';
    }       
}
add_action( 'woocommerce_thankyou', 'my_custom_checkout_field_display_order_data_ritiro_sede', 10, 1 );
add_action( 'woocommerce_view_order', 'my_custom_checkout_field_display_order_data_ritiro_sede', 10, 1 );