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



基于我之前的问题+问题的答案

如何从WooCommerce签出保存自定义复选框字段状态?

我在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 );

最新更新