首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用时,get_post_meta没有显示自定义字段的值

调用时,get_post_meta没有显示自定义字段的值
EN

Stack Overflow用户
提问于 2015-12-11 03:37:23
回答 1查看 1.7K关注 0票数 0

下面的代码用于在woocommerce签出中添加自定义order字段:

代码语言:javascript
复制
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元:

代码语言:javascript
复制
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']) );
    }
}

这一切都正确地显示并返回woocommerce的Orders部分中的值。但是,我无法访问这些数据来返回/显示在“感谢”页面上。我目前正在使用以下代码:

代码语言:javascript
复制
<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>

我在这里回顾了两个小时的文章&在Google上,包括下面的示例(我的代码镜像),但无法获得显示的值:

meta()

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-11 03:47:43

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

代码语言:javascript
复制
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' );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34215698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档