首页 > 解决方案 > 在订单详细信息中显示自定义 WooCommerce 结帐字段并使其可编辑

问题描述

我正在更新 WooCommerce 的插件,并且我有一个hooks.php处理 WooCommerce 钩子的文件。我在结帐时添加了四个新的计费字段,我需要在订单详细信息中显示它们;我还需要使它们可编辑。

这是我成功显示我的字段的代码:

add_action('woocommerce_admin_order_data_after_billing_address', function($order) 
  echo p(strong(__('Codice Fiscale', 'fatt-24')).': <br />' . order_c_fis($order));
  echo p(strong(__('Partita Iva / VAT number', 'fatt-24')).': <br />' . order_p_iva($order));
  echo p(strong(__('Codice destinatario', 'fatt-24')) . ': <br />' . order_recipientcode($order));
  echo p(strong(__('Indirizzo PEC', 'fatt-24')) . ': <br />' . order_pec_address($order));
}, 10, 1);

我无法编辑和保存它。

标签: phpwordpresswoocommerceorders

解决方案


用于在管理订单详细信息中显示为可编辑字段

add_filter('woocommerce_admin_billing_fields', 'custom_admin_billing_fields', 10, 1);

function custom_admin_billing_fields($fields) {
    $fields['billing_fiscalcode'] = array(
        'label' => __('billing_fiscalcode', 'woocommerce'),
        'show' => true,
    );
    $fields['billing_vatcode'] = array(
        'label' => __('billing_vatcode', 'woocommerce'),
        'show' => true,
    );
    $fields['billing_recipientcode'] = array(
        'label' => __('billing_recipientcode', 'woocommerce'),
        'show' => true,
    );
    $fields['billing_pecaddress'] = array(
        'label' => __('billing_pecaddress', 'woocommerce'),
        'show' => true,
    );
    return $fields;
}

add_action('woocommerce_admin_order_data_after_billing_address', 'display_billing_options_value_in_admin_order', 10, 1);

function display_billing_options_value_in_admin_order($order) {


    if ($value = get_post_meta($order->get_id(), 'billing_fiscalcode', true))
        echo '<p><strong>' . __('Billing Fiscalcode', 'woocommerce') . ':</strong> ' . $value . '</p>';
    if ($value = get_post_meta($order->get_id(), 'billing_vatcode', true))
        echo '<p><strong>' . __('billing_vatcode', 'woocommerce') . ':</strong> ' . $value . '</p>';
    if ($value = get_post_meta($order->get_id(), 'billing_recipientcode', true))
        echo '<p><strong>' . __('billing_recipientcode', 'woocommerce') . ':</strong> ' . $value . '</p>';
    if ($value = get_post_meta($order->get_id(), 'billing_pecaddress', true))
        echo '<p><strong>' . __('billing_pecaddress', 'woocommerce') . ':</strong> ' . $value . '</p>';
}

推荐阅读