WordPress hazır içerik yönetim sistemi bizlere açık kaynak olmasından dolayı birçok özellik sağlıyor. Sadece WordPress değil kullandığımız eklentilerin kaynak dosyalarına erişerek yeni özellikler dahil edebiliyor veya gerekli düzenlemeleri sağlayabiliyoruz. İhtiyaçlar doğrultusunda gerekli kod blokları ile müdahale sağlayarak istediğimiz sonucu elde ediyoruz.
Woocommerce eklentisi bizlere bir e-ticaret sitesi yaratmamız için büyük bir kolaylık sağlıyor. Fakat E-Ticaret çok geniş bir alan olduğu için herkesin farklı istekleri doğrultusunda Woocommerce eklentisi geliştiricileri tarafından zamanla güncellenerek günümüzün modern taleplerini en stabil şekilde cevaplamaya çalışıyor. Fakat hızlı çözümler için dosyalara müdahalede bulunarak gerekli düzenlemeleri isteklerimiz doğrultusunda gerçekleştirebiliriz.
Woocommerce eklentisinin fatura bilgileri istenildiği sipariş ekranlarına müdahale ederek ekstra bir alan oluşturabiliriz. Bu yazımızda TC Kimlik Numarası isteyeceğiz. Bu sayede fatura kesmek isteyen firmalar bu bilgiyi kullanarak fatura kesebilirler. Arzu ederseniz bu alanları çoğaltarak Vergi Numarası, TC Kimlik No gibi alanlar ekleyebilirsiniz.
Bu değişiklikleri yapmadan önce lütfen yedek almayı unutmayınız.
Öncelikle wp-content/themes/temaadiniz/functions.php dosyamıza ulaşıyoruz. Temamızın içerisinde bulunan functions.php dosyasına aşağıda bulunan kod bloğunu ekleyiniz. Bu sayede fatura bilgileri ekranında TC Kimlik No alanı gelecektir.
/** TC Kimlik No Ekleme **/ add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' ); function custom_override_checkout_fields( $fields ) { $fields['billing']['shipping_tc'] = array( 'label' => __('TC Kimlik No', 'woocommerce'), 'placeholder' => _x('Fatura İçin Gerekli', 'placeholder', 'woocommerce'), 'required' => true, 'class' => array('form-row-wide'), 'clear' => true ); return $fields; }
TC Kimlik No alanı ekledikten sonra müşterinin gireceği TC Kimlik No doğruluğunu kontrol edecek kod alanını eklememiz gerekmektedir. Yukarıdaki kod bloğunun bitiminden sonra altına ekleyeceğiniz diğer kod aşağıda ki gibidir;
/** TC Doğrula **/ function isTcKimlik($tc){ if(strlen($tc) < 11){ return false; } if($tc[0] == '0'){ return false; } $plus = ($tc[0] + $tc[2] + $tc[4] + $tc[6] + $tc[8]) * 7; $minus = $plus - ($tc[1] + $tc[3] + $tc[5] + $tc[7]); $mod = $minus % 10; if($mod != $tc[9]){ return false; } $all = ''; for($i = 0 ; $i < 10 ; $i++){ $all += $tc[$i]; } if($all % 10 != $tc[10]){ return false; } return true; }
/** TC Kimlik Noyu Doğrula **/ add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process'); function my_custom_checkout_field_process() { $tcno = $_POST['shipping_tc']; if(!isTcKimlik($tcno)) wc_add_notice( __( 'Lütfen Geçerli TC Kimlik No Girin.' ), 'error' ); }
Müşteriden TC Kimlik bilgisini aldık ve gerekli onay işlemlerinden geçirdikten sonra artık müşteriden gelen TC Kimlik No bilgisini yönetici sayfasında göstermemiz gerekiyor. Sipariş detaylarında bu bilginin dahil edilip görünebilmesi için lütfen aşağıda ki kod bloğunu functions.php dosyanıza yazmaya devam ederek en alta yerleştiriniz.
/** Admin Sipariş Detayında Fatura Bilgilerinde TC No'yu Görebilmesi İçin**/ 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>'.__('TC Kimlik No').':</strong> ' . get_post_meta( $order->get_id(), '_shipping_tc', true ) . '</p>'; }
allah senden çok razı olsun acayip işime yaradı en az 100 ₺ kardayız 😀 teşekkürler
Elinize sağlık faydalı bilgi olmuş. Kargo konusunda da bilgiler olursa seviniriz.
Aradığım çözümü sonunda buldum. Fakat eklenen kısım alta düşüyor. Bunu üste almak için ne yapmak gerekir.
Teşekkürler
Merhaba Hakan
Çözümün işine yaradığına çok sevindim,
Aşağıdaki kod bloğunu değiştirerek sıralamayı belirtebilirsin bilgilerin girildiği yerde. Ya da sadece custom_override_checkout_fields fonksiyonunun içine ‘priority’ => 1, satırını ekleyerek sıralamasını belirleyebilirsin ben 1 yaptım direk tc kimlik no istiyor
function custom_override_checkout_fields( $fields ) {
$fields[‘billing’][‘shipping_tc’] = array(
‘label’ => __(‘TC Kimlik No’, ‘woocommerce’),
‘placeholder’ => _x(‘Fatura İçin Gerekli’, ‘placeholder’, ‘woocommerce’),
‘required’ => true,
‘class’ => array(‘form-row-wide’),
‘clear’ => true,
‘priority’ => 1,
);
Hocam Merhaba;
Arkadaşın dediği gibi eklenti güzel çalışıyor eline sağlık fakat eklenen alan formun en altında gözüküyor. Söylediğin gibi 10,1 yazan kısımdaki değerli değiştirmeyi deniyorum ama herhangi bir yer değişikliği söz konusu değil. Bu konu ile ilgili yardım edebilir misiniz?
Merhaba Onur
Sürekli siteye giremediğim için yorumunu biraz geç gördüm kusura bakma.
Aşağıdaki kod bloğunu değiştirerek sıralamayı belirtebilirsin bilgilerin girildiği yerde. Ya da sadece custom_override_checkout_fields fonksiyonunun içine ‘priority’ => 1, satırını ekleyerek sıralamasını belirleyebilirsin ben 1 yaptım direk tc kimlik no istiyor
function custom_override_checkout_fields( $fields ) {
$fields[‘billing’][‘shipping_tc’] = array(
‘label’ => __(‘TC Kimlik No’, ‘woocommerce’),
‘placeholder’ => _x(‘Fatura İçin Gerekli’, ‘placeholder’, ‘woocommerce’),
‘required’ => true,
‘class’ => array(‘form-row-wide’),
‘clear’ => true,
‘priority’ => 1,
);
Hocam Merhaba;
Radio butonu ile Bireysel / Kurumsal fatura tipi ayarlama ile ilgili paylaştığınız konu var mı?
ÖRNEĞİN;
Bireysel fatura tipinde sadece TCK No alanı eklensin Kurumsal fatura tipi seçildiğinde TCK No gizlensin Firma Adı, Vergi Dairesi ve Vergi No alanları gözüksün tarzında bir yazınız var mı?
Teşekkürler ,
Sadece T.C. doğrulama kısmını başka bir uygulama ile birleştirdim ve işime yaradı
Aslında hiç yorum yazmam ama bu sefer gerçekten teşekkür etmek istedim. Çalıştı. Beni büyük uğraştan kurtardınız.
Merhaba
İşinize yaradığına çok sevindim, yorumunuz için teşekkürler.