Geçenlerde böyle bir yapıya ihtiyaç duyup biraz araştırdım, eklentiler ile de TC Kimlik numarası gibi özel alanlar eklenebiliyor ama eklenti kurmadan çözmeyi hep tercih etmişimdir.Bu konuda Türkçe bir makale bulamadığım için sizlerde faydalanın istedim ve buraya not düşüyorum.Aşağıda yazan kodları sadece functions.php dosyamıza ekleyerek çözüme ulaşacağız.Öncelikle sipariş sayfasında fatura bilgileri kısmında gözükmesi için yeni bir özel alan oluşturuyoruz ;
/** TC Kimlik No Ekle **/
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;
}
Ardından bu özel alana girilen değerin geçerli bir TC kimlik numarası olduğuna emin olmak için bir TC kimlik numarası doğrulama fonksiyonuna ihtiyacımız var, bunun için Mehmet Fasıl isimli arkadaşımızın blogunda hazırlayıp paylaştığı kodu kullandım. (Kendisine de teşekkür ederim)
/** TC Doğrula Fonksiyonu **/
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;
}
Şimdi TC kimlik numarasını doğrulayalım
/** 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 Doğru Bir TC Kimlik No Girin.' ), 'error' );
}
Yukarıda ki işlemler ile müşteriden geçerli bir TC kimlik numarası almayı başardık, şimdi bu TC kimlik numarasını yönetici sayfasında sipariş detayını görüntülediğimizde fatura bilgileri kısmında görmeliyiz. Bunun için son olarak da aşağıda ki kodu ekliyoruz ve her şey tamam oluyor…
/** Adminin 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 ''.__('TC Kimlik No').': ' . get_post_meta( $order->get_id(), '_shipping_tc', true ) . '';
}
Faydalı olması dileğiyle.
Congratulations @hakanarslan! You received a personal award!
Click here to view your Board
Do not miss the last post from @steemitboard:
Congratulations @hakanarslan! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!