Как отобразить пользовательское поле в заказах woocommerce в панели администратора?

в настоящее время я добавляю пользовательское поле фактурирования в 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. Я использую следующий код только для того, чтобы увидеть значение в разделе 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/. Но все в этом документе, работающем корректно, ожидает, что billing_phone /Phone заметьте в разделе Custom. Я проверяю параметр экрана, но я уже отметил пользовательское поле. Другое настраиваемое поле и его значение видны и доступны для редактирования.

Как я могу отредактировать это значение в конце. Пожалуйста, помогите.

6 голосов | спросил Ron 21 Jpm1000000pmThu, 21 Jan 2016 14:48:10 +030016 2016, 14:48:10

2 ответа


13

Код, который вы предоставили, является неполным. Не уверен, что это единственный код, который вы используете для достижения того, чего хотите. Итак, помимо первого кода, который вы предоставили, я добавляю все остальное код, который требуется для отображения нового поля в бэкэнде в поле «Детали заказа» и сделать его редактируемым через настраиваемые поля. Обратите внимание, что во втором кодовом блоке вы назвали поле ключа как _billing_new_phone. Любое пользовательское полевое имя ключа, начинающееся с _ (подчеркивание), является скрытым настраиваемым полем & не будет отображаться на бэкэнде в разделе «Пользовательские поля».

/**
 * 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->id, 'billing_phone_new', true ) . '</p>';
}

WooCommerce не изменяет новое поле проверки в стандартном поле «Сведения о заказе». Он будет доступен в режиме «только просмотр» в этом поле, но вы можете отредактировать его с помощью стандартного настраиваемого поля WordPress. См. Снимок экрана ниже.

 введите описание изображения здесь>> </a> </p></body></html>

ответил Prasad Nevase 23 Jpm1000000pmSat, 23 Jan 2016 16:55:19 +030016 2016, 16:55:19
0

Вот решение: Доступ к прямым данным продукта не допускается, например.

$product->id

Правильный способ:

$product->get_id()
ответил Gaël 14 ThuEurope/Moscow2017-12-14T00:57:01+03:00Europe/Moscow12bEurope/MoscowThu, 14 Dec 2017 00:57:01 +0300 2017, 00:57:01

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132