Woocommerce Eklentisiz Fatura Bilgilerine TC Kimlik No Ekleme ve Doğrulama

in #tutorial7 years ago (edited)

 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.

Sort:  

Congratulations @hakanarslan, you have decided to take the next big step with your first post! The Steem Network Team wishes you a great time among this awesome community.


Thumbs up for Steem Network´s strategy

The proven road to boost your personal success in this amazing Steem Network

Do you already know that awesome content will get great profits by following these simple steps, that have been worked out by experts?

Congratulations @hakanarslan! You received a personal award!

1 Year on Steemit

Click here to view your Board

Do not miss the last post from @steemitboard:

SteemWhales has officially moved to SteemitBoard Ranking
SteemitBoard - Witness Update

Support SteemitBoard's project! Vote for its witness and get one more award!

Congratulations @hakanarslan! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

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!