WooCommerce Fatura&Kargo Ekranına Ek Alan Ekleme

Uzun zamandır WordPress vb sistemlerden kod anlamında uzak kalmıştım. Giriştiğimiz bir iş için wordpress ve woocommerce kullanmamız daha kolay gelmişti. Biraz paslanmışız anlayacağınız. Woocommerce üzerinde de çok nadir çalışmıştım.

Neyse ki uzun sürmedi hamlığı atmamız. Woocommerce üzerinde sipariş verirken kargo & fatura bilgilerini ayırmak ve kargo alanında ek bilgiler almak için alan eklemek gerekiyordu. Bunlar için eklentiler de mevcut ancak ben çok eklenti sever bir yapıda değilim. Bu yüzden fonksiyon dosyasına yapılacak ekler ile işi çözmek istedim.

Aşağıdaki kodlar ile de problemi çözebiliyoruz.

/**
 * Ödeme Ekranında Ek Alan Ekleme
 */
add_action( 'woocommerce_before_order_notes', 'odeme_ekranina_ozel_alan_ekleme' );
  
function odeme_ekranina_ozel_alan_ekleme( $checkout ) { 
   $current_user = wp_get_current_user();
   $saved_telefon_no = $current_user->telefon_no;
   woocommerce_form_field( 'telefon_no', array(        
      'type' => 'text',        
      'class' => array( 'form-row-wide' ),        
      'label' => 'Telefon Numarası',        
      'placeholder' => '50012345678',        
      'required' => true,        
      'default' => $saved_telefon_no,        
   ), $checkout->get_value( 'telefon_no' ) ); 
}

/**
 * Eklenen Alanın Kontrol Edilmesi
 */
add_action( 'woocommerce_checkout_process', 'eklenen_alanin_kontrol_edilmesi' );
  
function eklenen_alanin_kontrol_edilmesi() {    
   if ( ! $_POST['telefon_no'] ) {
      wc_add_notice( 'Lütfen telefon numarası giriniz.', 'error' );
   }
}

/**
 * Eklenen Alanın Mail ve Sipariş Tablosuna Eklenmesi
 */
add_action( 'woocommerce_checkout_update_order_meta', 'eklenen_alanin_kayit_edilmesi' );
  
function eklenen_alanin_kayit_edilmesi( $order_id ) { 
    if ( $_POST['telefon_no'] ) update_post_meta( $order_id, '_telefon_no', esc_attr( $_POST['telefon_no'] ) );
}
  
add_action( 'woocommerce_admin_order_data_after_billing_address', 'eklenen_alanin_sipariste_gosterilmesi', 10, 1 );
   
function eklenen_alanin_sipariste_gosterilmesi( $order ) {    
   $order_id = $order->get_id();
   if ( get_post_meta( $order_id, '_telefon_no', true ) ) echo '<p><strong>Telefon Numarası:</strong> ' . get_post_meta( $order_id, '_telefon_no', true ) . '</p>';
}
 
add_action( 'woocommerce_email_after_order_table', 'eklenen_alanin_mailde_gosterilmesi', 20, 4 );
  
function eklenen_alanin_mailde_gosterilmesi( $order, $sent_to_admin, $plain_text, $email ) {
    if ( get_post_meta( $order->get_id(), '_telefon_no', true ) ) echo '<p><strong>Telefon Numarası:</strong> ' . get_post_meta( $order->get_id(), '_telefon_no', true ) . '</p>';
}

Bununla siparişte ek bir telefon numarası aldık, kontrol ettik ve bunu e-posta ve sipariş detaylarının altında gösterdik.

Herkese kolay gelsin.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir