如何在管理面板中显示WooCommerce订单中的自定义字段?

时间:2016-01-21 作者:Ron

目前,我在woocommerce中添加了一个自定义帐单字段

function custom_override_checkout_fields( $fields ) {
     $fields[\'billing\'][\'billing_phone_new\'] = array(
        \'label\'     => __(\'Phone 2\', \'woocommerce\'),
    \'placeholder\'  => _x(\'Phone 2\', \'placeholder\', \'woocommerce\'),
    \'required\'  => false,
    \'class\'     => array(\'form-row-wide\'),
    \'clear\'     => true
     );

     return $fields;
}

add_filter(\'woocommerce_checkout_fields\',\'custom_override_checkout_fields\');
我需要在管理端编辑此字段值。目前,我可以编辑账单地址中的所有其他值,但该值未出现在管理部分。我只使用以下代码来查看admin部分中的值。

function order_phone_backend($order){
    echo "<p><strong>Billing phone 2:</strong> " . get_post_meta( $order->id, \'_billing_phone_new\', true ) . "</p><br>";
} 

add_action( \'woocommerce_admin_order_data_after_billing_address\', \'order_phone_backend\', 10, 1 );
我阅读了文档https://docs.woothemes.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/ .但本文档中的所有内容都正常,expect billing\\u phone/phone是注释,请参见自定义字段下的内容。我选中了屏幕选项,但我已经勾选了自定义字段。其他自定义字段及其值可见且可编辑。

如何在后端编辑此值。请帮忙。

2 个回复
最合适的回答,由SO网友:Prasad Nevase 整理而成

您提供的代码不完整。不确定这是否是实现所需的唯一代码。因此,除了您提供的第一个代码块之外,下面我还添加了在“订单详细信息”框中显示后端新字段所需的所有其余代码,并通过自定义字段使其可编辑。请注意,在第二个代码块中,您将字段键命名为_billing_new_phone. 任何以_u(下划线)开头的自定义字段关键字名称都是隐藏的自定义字段(&P);不会显示在后端的“自定义字段”下。

/**
 * Process the checkout
 */
add_action(\'woocommerce_checkout_process\', \'my_custom_checkout_field_process\');

function my_custom_checkout_field_process() {
    // Check if set, if its not set add an error.
    if ( ! $_POST[\'billing_phone_new\'] )
        wc_add_notice( __( \'Phone 2 is compulsory. Please enter a value\' ), \'error\' );
}


/**
 * Update the order meta with field value
 */
add_action( \'woocommerce_checkout_update_order_meta\', \'my_custom_checkout_field_update_order_meta\' );

function my_custom_checkout_field_update_order_meta( $order_id ) {
    if ( ! empty( $_POST[\'billing_phone_new\'] ) ) {
        update_post_meta( $order_id, \'billing_phone_new\', sanitize_text_field( $_POST[\'billing_phone_new\'] ) );
    }
}


/**
 * Display field value on the order edit page
 */
add_action( \'woocommerce_admin_order_data_after_billing_address\', \'my_custom_checkout_field_display_admin_order_meta\', 10, 1 );

function my_custom_checkout_field_display_admin_order_meta($order){
    echo \'<p><strong>\'.__(\'Phone 2\').\':</strong> <br/>\' . get_post_meta( $order->get_id(), \'billing_phone_new\', true ) . \'</p>\';
}
WooCommerce不会在其标准“订单详细信息”框下编辑新签出字段。该框中的“仅查看”模式可用,但您可以通过WordPress的“标准自定义字段”块进行编辑。请参见下面的屏幕截图。

enter image description here

SO网友:Gaël

解决方案如下:不允许直接访问产品数据,例如。

$product->id
正确的方法是:

$product->get_id()

相关推荐

如何在Functions.php中链接style.css

我是WordPress的新手;我刚开始学习WordPress。我想把风格联系起来。函数中的css。php,但我无法解决这里可能存在的问题。谁能给我指出正确的方向吗?指数php<?php get_header(); ?> <?php if ( have_posts() ) { while ( have_posts() ) { the_post();