在 WooCommerce 谢谢页面上显示自定义复选框字段状态
Display custom checkbox field state on WooCommerce thankyou page
根据我之前的问题+问题的答案
我在 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 );
根据我之前的问题+问题的答案
我在 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 );