Több egyéni mező hozzáadása a számlázási területhez. Ez a kód megjeleníti az egyéni mezőket az admin Megrendelés részletei képernyőn, valamint a rendszergazdának és az ügyfélnek küldött e-mailekben. A jelölőnégyzet mezőt úgy is beállítottam, hogy szöveges eredményt kapjon 1 érték helyett. A jelölőnégyzet szintén előre be van jelölve.
Több egyéni mező hozzáadása a számlázási területhez.
/ * --------- Egyéni mezőket ad hozzá szűrőkkel. ------ Az alábbi egyéni mezők különféle felhasználható típusokat mutatnak be. Ezután megjelenik az admin Megrendelés részletei oldalon, valamint az admin és az ügyfél e-mailjeiben. A négyzetek alapértelmezés szerint csak az 1-es számot mutatják, ha rákattintanak. Kódot adtam hozzá, hogy amikor egy jelölőnégyzetre kattint, akkor az megtörténik mutasson szöveget, például Be és Igen. A jelölőnégyzet szintén előre be van jelölve. * / // Saját mezők // Hozzáadható a számlázási, szállítási vagy rendelési területhez. A fiók oldalhoz használja az account szót. add_filter( 'woocommerce_checkout_fields', 'custom_fields_checkout' ); function custom_fields_checkout( $fields ) { $fields['billing']['billing_checkbox'] = array( 'label' => 'Jelölő négyzet', 'type' => 'checkbox', 'required' => true, 'class' => array( 'form-row-wide' ), 'priority' => 26, ); $fields['billing']['billing_text'] = array( 'label' => 'Egysoros szöveg', 'type' => 'text', 'required' => true, 'class' => array( 'form-row-wide' ), 'priority' => 27, ); $fields['billing']['billing_textarea'] = array( 'label' => 'Szöveg mező', 'type' => 'textarea', 'required' => true, 'class' => array( 'form-row-wide' ), 'priority' => 28, ); // Hozzáadva a megrendelési jegyzetek területéhez. $fields['order']['billing_date'] = array( 'label' => 'Dátum', 'type' => 'date', 'required' => true, 'class' => array( 'form-row-wide' ), 'priority' => 29, ); // Hozzáadva a megrendelési jegyzetek területéhez. $fields['order']['billing_checkbox2'] = array( 'label' => 'Jelölő négyzet 2', 'type' => 'checkbox', 'default' => 1, //Ez előre bejelöli a jelölőnégyzetet 'required' => true, 'class' => array( 'form-row-wide' ), 'priority' => 28, ); // Hozzáadva a megrendelési jegyzetek területéhez. $fields['order']['billing_dropdown'] = array( 'label' => 'Drop Down', 'required' => true, 'class' => array( 'form-row-wide' ), 'priority' => 28, 'type' => 'select', 'options' => array( // a <select> vagy az <input type="radio" /> '' => 'Válasszon', // üres érték azt jelenti, hogy a mező nincs kiválasztva // 'value'=>'Név' 'Option 1' => 'Opció 1', 'Option 2' => 'Opció 2', 'OPtion 3' => 'Opció 3' ) ); return $fields; } // A Megrendelés területhez hozzáadott egyéni mezők itt jelennek meg a Számlázás területen a WP háttér WooCommerce - > Megrendelés és "Megrendelés részletei" oldalon. 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_checkbox'] ) ) update_post_meta( $order_id, 'billing_checkbox', $_POST['billing_checkbox'] ); if ( ! empty( $_POST['billing_checkbox2'] ) ) update_post_meta( $order_id, 'billing_checkbox2', $_POST['billing_checkbox2'] ); } // Az egyéni mező eredményének megjelenítése a rendelésszerkesztő oldalon (háttérkép), amikor a jelölőnégyzet be van jelölve add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_custom_field_on_order_edit_pages', 10, 1 ); function display_custom_field_on_order_edit_pages( $order ){ $billing_checkbox = get_post_meta( $order->get_id(), 'billing_checkbox', true ); if( $billing_checkbox == 1 ) echo '<p><strong>Checkbox: </strong> <span style="color:red;">On</span></p>'; $billing_checkbox2 = get_post_meta( $order->get_id(), 'billing_checkbox2', true ); if( $billing_checkbox2 == 1 ) echo '<p><strong>Checkbox 2: </strong> <span style="color:red;">Yes</span></p>'; } // Mezők megjelenítése a háttérrendelés részletek képernyőn. add_action( 'woocommerce_admin_order_data_after_billing_address', 'customfields_billing_checkbox_checkout_display' ); function customfields_billing_checkbox_checkout_display( $order ){ echo '<p><b>Text:</b> ' . get_post_meta( $order->get_id(), '_billing_text', true ) . '</p>'; echo '<p><b>Text Area:</b> ' . get_post_meta( $order->get_id(), '_billing_textarea', true ) . '</p>'; echo '<p><b>Date:</b> ' . get_post_meta( $order->get_id(), '_billing_date', true ) . '</p>'; echo '<p><b>Drop Down:</b> ' . get_post_meta( $order->get_id(), '_billing_dropdown', true ) . '</p>'; } // Mezők megjelenítése az adminisztrátor és az ügyfél e-mailjeiben. add_action( 'woocommerce_email_after_order_table', 'ts_email_after_order_table', 10, 4 ); function ts_email_after_order_table( $order, $sent_to_admin, $plain_text, $email ) { echo '<h2>Additional information</h2>'; echo '<p><strong>'.__('Text').':</strong> <br/>' . get_post_meta( $order->get_id(), '_billing_text', true ) . '</p>'; echo '<p><strong>'.__('Text Area').':</strong> <br/>' . get_post_meta( $order->get_id(), '_billing_textarea', true ) . '</p>'; echo '<p><strong>'.__('Date').':</strong> <br/>' . get_post_meta( $order->get_id(), '_billing_date', true ) . '</p>'; echo '<p><strong>'.__('Drop Down').':</strong> <br/>' . get_post_meta( $order->get_id(), '_billing_dropdown', true ) . '</p>'; $billing_checkbox = get_post_meta( $order->get_id(), 'billing_checkbox', true ); if( $billing_checkbox == 1 ) echo '<p><strong>Checkbox: </strong> <span style="color:red;">On</span></p>'; $billing_checkbox2 = get_post_meta( $order->get_id(), 'billing_checkbox2', true ); if( $billing_checkbox2 == 1 ) echo '<p><strong>Checkbox 2: </strong> <span style="color:red;">Yes</span></p>'; }
Természetesen a mezők elhelyezése változtatható a megfelelő függvényeivel. Pl „order” a rendelész megjegyzéseinél lesz látható a „billing” a számlázási adatoknál stb…