基于我之前的问题+问题的答案
如何从WooCommerce签出保存自定义复选框字段状态?
我在WooCommerce结账页面上有一个额外的复选框,但当订单完成时,我在感谢页面上看不到额外的字段。选中或取消选中时,我的复选框将值1
或0
保存在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 );