目前,我在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是注释,请参见自定义字段下的内容。我选中了屏幕选项,但我已经勾选了自定义字段。其他自定义字段及其值可见且可编辑。
如何在后端编辑此值。请帮忙。
最合适的回答,由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的“标准自定义字段”块进行编辑。请参见下面的屏幕截图。