Cum să afișezi câmpuri personalizate în comenzile WooCommerce în panoul de administrare
În prezent am adăugat un câmp personalizat de facturare în WooCommerce folosind:
function custom_override_checkout_fields( $fields ) {
$fields['billing']['billing_phone_new'] = array(
'label' => __('Telefon 2', 'woocommerce'),
'placeholder' => _x('Telefon 2', 'placeholder', 'woocommerce'),
'required' => false,
'class' => array('form-row-wide'),
'clear' => true
);
return $fields;
}
add_filter('woocommerce_checkout_fields','custom_override_checkout_fields');
Trebuie să editez valoarea acestui câmp în partea de administrare. În prezent pot edita toate celelalte valori din adresa de facturare, dar această valoare nu apare în secțiunea de admin. Folosesc următorul cod doar pentru a vedea valoarea în secțiunea de administrare:
function order_phone_backend($order){
echo "<p><strong>Telefon facturare 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 );
Am citit documentația https://docs.woothemes.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/. Totul în acest document funcționează corect, cu excepția faptului că billing_phone/Telefon nu apare sub Câmpuri personalizate. Am verificat opțiunile ecranului și am bifat deja câmpurile personalizate. Alte câmpuri personalizate și valorile lor sunt vizibile și editabile.
Cum pot edita această valoare în back-end? Vă rog să mă ajutați.
Codul pe care l-ați furnizat este incomplet. Nu sunt sigur dacă acesta este singurul cod pe care îl folosiți pentru a obține ceea ce doriți. Deci, pe lângă primul bloc de cod pe care l-ați furnizat, mai jos adaug tot restul codului necesar pentru a afișa noul câmp în backend în caseta „Detalii comandă” și pentru a-l face editabil prin câmpuri personalizate. Rețineți că, în al doilea bloc de cod, ați denumit cheia câmpului _billing_new_phone
. Orice nume de cheie de câmp personalizat care începe cu _ (underscore) este un câmp personalizat ascuns și nu va apărea în backend sub „Câmpuri personalizate”.
/**
* Procesează finalizarea comenzii
*/
add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');
function my_custom_checkout_field_process() {
// Verifică dacă este setat, dacă nu este setat adaugă o eroare.
if ( ! $_POST['billing_phone_new'] )
wc_add_notice( __( 'Telefonul 2 este obligatoriu. Vă rugăm să introduceți o valoare' ), 'error' );
}
/**
* Actualizează metadatele comenzii cu valoarea câmpului
*/
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'] ) );
}
}
/**
* Afișează valoarea câmpului pe pagina de editare a comenzii
*/
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>'.__('Telefon 2').':</strong> <br/>' . get_post_meta( $order->get_id(), 'billing_phone_new', true ) . '</p>';
}
WooCommerce nu face noul câmp de finalizare a comenzii editabil sub caseta standard „Detalii comandă”. Acesta va fi disponibil în modul „doar vizualizare” în acea casetă, dar îl puteți edita prin blocul standard de câmpuri personalizate din WordPress. Consultați captura de ecran de mai jos.

"Orice nume de câmp personalizat care începe cu _ (underscore) este un câmp personalizat ascuns și nu va apărea în backend sub "Câmpuri personalizate"." De unde ai obținut această informație?

Pe codex-ul WordPress. Poți obține mai multe informații aici

Te rog ajută-mă să rezolv întrebarea prietenului meu https://stackoverflow.com/questions/49505056/woocommerce-create-new-discount-functionality
