当前位置: 首页 > 知识库问答 >
问题:

get_post_meta调用时不显示自定义域的值

景光赫
2023-03-14

我使用以下代码在woocommerce结帐中添加自定义订单字段:

function delivery_time_slots_array () {
return array(
    '' => _('Choose a time slot'),
    '5pm - 6pm' => __('5pm - 6pm', 'woocommerce'),
    '6pm - 7pm' => __('6pm - 7pm', 'woocommerce'),
    '7pm - 8pm' => __('7pm - 8pm', 'woocommerce'),
    '8pm - 9pm' => __('8pm - 9pm', 'woocommerce')
   );
}

add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
$fields['order']['order_delivery_time'] = array(
    'type'      => 'select',
    'label'     => __('Delivery time (choose an hour slot between 5pm & 9pm)', 'woocommerce'),
    'class'     => array('form-row-wide'),
    'required'  => true,
    'options'   => delivery_time_slots_array()
    );

然后,后面跟着下面的代码,用字段值更新order meta:

add_action( 'woocommerce_checkout_update_order_meta', 'custom_checkout_field_update_order_meta', 10, 2 );

function custom_checkout_field_update_order_meta( $order_id ) {
    if ( ! empty( $_POST['order_delivery_time'] ) ) {
    update_post_meta( $order_id, 'Delivery time', sanitize_text_field($_POST['order_delivery_time']) );
    }
}
<li class="delivery_slot">
            <?php _e( 'Delivery Slot', 'woocommerce' ); ?>
            <strong><?php
                $delivery_slots = delivery_time_slots_array();
                $delivery_slot  = get_post_meta($order_id, 'Delivery time', true);
                if( isset($delivery_slots[$delivery_slot]) )
                    echo $delivery_slots[$delivery_slot]; 
            ?></strong>

共有1个答案

谭玄天
2023-03-14

如果将它附加到order-details.php模板中的任何一个钩子上,那么$order对象将在回调函数中可用

function so_34215698_display_order_meta( $order ){
   $delivery_slots = delivery_time_slots_array()
   $delivery_slot  = get_post_meta($order->id, 'Delivery time', true);
        if( isset($delivery_slots[$delivery_slot]) )
             echo $delivery_slots[$delivery_slot]; 
}
add_action( 'woocommerce_order_details_after_order_table', 'so_34215698_display_order_meta' );
 类似资料:
  • 我正在测试DynamoDB表,希望使用关键字“dev”为prod和dev环境设置不同的表名,用于开发,用于生产。 我有一个POJO 在Prod上,我希望它的名字是abc_xy_Prod_MyProjectName_Employee。 所以,我写了一个TableNameResolver 这是通过创建一个名为abc_xy_prod_MyProjectName_Employee in productio

  • 我有一个WooCommerce商店页面,它完美地展示了我所有的产品。此页面也设置为设置中的“商店”页面。现在我想要一个叫做首页的第二个页面,它应该使用与商店页面相同的模板。( 我使用的是woocommerce的github中的标准归档产品模板。 我可以看到正在加载的模板,如标题,但某些woocommerce函数不会返回预期值。woocommerce\u-before\u-shop\u循环不会返回任

  • 我有一个具有20个属性的对象。 其中有些属性设置为值,有些未定义。当I!如何将未显示键值的设置为?

  • 这是我的烤面包机功能代码:

  • 本文向大家介绍C#自定义DataGridViewColumn显示TreeView,包括了C#自定义DataGridViewColumn显示TreeView的使用技巧和注意事项,需要的朋友参考一下 我们可以自定义DataGridView的DataGridViewColumn来实现自定义的列,下面介绍一下如何通过扩展DataGridViewColumn来实现一个TreeViewColumn 1.Tre

  • 我试图在单个产品页面上显示自定义文本“price only visible for logged in users”,但仅当,具有当前中的值时。 当加载单个产品页面时,我找不到实现当前产品post_id的正确SQL查询。 下面是我的代码: