Hogyan adjunk egyedi mezőket a pénztár oldalhoz? Woocommerce

 

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…

 

Egyedi mező bővítmény

 

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük