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.
teşekkür ederim işimize çok yaradı ..
hocam öncellikle bu faydalı bilgili bizimle paylaştığın için çok teşekkürler. Peki Woocommerce için değil de normal kayıt işlemleri için tc sorgulamak istesek nasıl yaoacaz mesela user regitation eklentisi var bende veya başka bir eklenti onu nasıl yapabiliriz ?
Merhaba hocam
User reg. eklentisini içeriklerine göre hareket etmek kod yazmak gerekiyor. O yüzden şu an onun için bir bilgim yok hocam. Bulursam burada paylaşırım mutlaka.
Merhaba
Öncelikle teşekkürler.
Benim problemim bu eklediğimiz sipariş çıktılarında vs gözükmüyor. Bunu eklememin bir yolu var mı acaba ?
Merhaba
Çıktıdan kastınız siparişler sayfasına fatura yazdır kargo bilgisi yazdır alanları ise orada kullandığınız eklentinin kod sayfalarında düzenleme yapmanız lazım. Örnek olarak WooCommerce PDF Invoices & Packing Slips eklentisi bunun için çok açık bir eklenti. Bu eklentiyi kullanıp bu eklentinin kodlarında manuel oluşturduğumuz tc kimlik numarasını get edebilirsiniz.
Hocam şunun da nasıl yapıldığını yazsanız süper olacaktı. Buraya kadar çalışıyor ama faturaya TC kimlik no işlemiyor. Yazdığınız eklentiyi kullandım localde test ediyorum. Nasıl bir kod girmemiz gerekiyor?
Merhaba Murat
TC kimlik no işlemiyor dediğin nokta admin panelinde ilgili panele bilgiyi eklemektedir? Sorduğun soruyu biraz daha açabilir misin?
Üstad teşekkürler, ben başka bişey soracaktım. Bu yazı içinde paylaştığın kodları wordpresste nasıl biz de paylaşabiliriz? Kopyalamak adına güzel oluyor, kod paylalım eklentisi?
Merhaba Ercan
WordPress yazılarının içerisinde kod paylaşmak için bu eklentiyi kullanabilirsin.
Enlighter – Customizable Syntax Highlighter
paylaşım için teşekkürler..bu kod dizimini biraz daha geliştirmiş hali ancak hala woo commerce cep uygulamasında özel alanları göstermiyor( senaryoda _shipping_tc , _shipping_tax_office , _shipping_tax_number alanları acaba atladığım birşey mi var ? NOT: Sorun wooCommerce cep uygulamasında yaşanmakta. e-posta ve admin tarafında bir sıkınıt yok
/** TC Kimlik No, Vergi Dairesi ve Vergi Numarası 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 için gerekli’, ‘placeholder’, ‘woocommerce’ ),
‘required’ => true,
‘class’ => array( ‘form-row-wide’ ),
‘clear’ => true,
‘priority’ => 1,
);
$fields[‘billing’][‘shipping_tax_office’] = array(
‘label’ => __( ‘Vergi Dairesi’, ‘woocommerce’ ),
‘placeholder’ => _x( ‘Vergi Dairesi’, ‘placeholder’, ‘woocommerce’ ),
‘required’ => false,
‘class’ => array( ‘form-row-wide’ ),
‘clear’ => true,
‘priority’ => 2,
);
$fields[‘billing’][‘shipping_tax_number’] = array(
‘label’ => __( ‘Vergi Numarası’, ‘woocommerce’ ),
‘placeholder’ => _x( ‘Vergi Numarası’, ‘placeholder’, ‘woocommerce’ ),
‘required’ => false,
‘class’ => array( ‘form-row-wide’ ),
‘clear’ => true,
‘priority’ => 3,
);
return $fields;
}
/** 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;
}
/** Admin Sipariş Detayında Fatura Bilgilerinde TC No, Vergi Dairesi ve Vergi Numarasını 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 ) . ”;
echo ‘‘ . __( ‘Vergi Dairesi’ ) . ‘: ‘ . get_post_meta( $order->get_id(), ‘_shipping_tax_office’, true ) . ”;
echo ‘‘ . __( ‘Vergi Numarası’ ) . ‘: ‘ . get_post_meta( $order->get_id(), ‘_shipping_tax_number’, true ) . ”;
// Eğer bu özel alanların değerleri boş ise, varsayılan bir değer göstermek için aşağıdaki kodu kullanabilirsiniz:
/*
echo ‘‘ . __( ‘TC Kimlik No’ ) . ‘: ‘ . ( get_post_meta( $order->get_id(), ‘_shipping_tc’, true ) ?: ‘N/A’ ) . ”;
echo ‘‘ . __( ‘Vergi Dairesi’ ) . ‘: ‘ . ( get_post_meta( $order->get_id(), ‘_shipping_tax_office’, true ) ?: ‘N/A’ ) . ”;
echo ‘‘ . __( ‘Vergi Numarası’ ) . ‘: ‘ . ( get_post_meta( $order->get_id(), ‘_shipping_tax_number’, true ) ?: ‘N/A’ ) . ”;
*/
}
/** Aşağıdaki kod, sadece “customer_invoice” e-posta şablonunda çalışacak ve fatura detayları adında bir tablo oluşturacaktır.**/
add_action( ‘woocommerce_email_order_meta’, ‘my_custom_checkout_field_display_email_order_meta’, 10, 4 );
function my_custom_checkout_field_display_email_order_meta( $order, $sent_to_admin, $plain_text, $email ) {
echo ” . __( ‘Fatura Bilgileri’ ) . ”;
echo ‘
‘ . __( ‘TC Kimlik No’ ) . ‘
‘ . get_post_meta( $order->get_id(), ‘_shipping_tc’, true ) . ‘
‘ . __( ‘Vergi Dairesi’ ) . ‘
‘ . get_post_meta( $order->get_id(), ‘_shipping_tax_office’, true ) . ‘
‘ . __( ‘Vergi Numarası’ ) . ‘
‘ . get_post_meta( $order->get_id(), ‘_shipping_tax_number’, true ) . ‘
‘;
}
/**Bu kod, WooCommerce cep uygulamasında özel alanların görüntülenebilmesini sağlamak için özel bir sorgu argümanı ekler. Bu şekilde, siparişleri sorgularken _shipping_tc, _shipping_tax_office ve _shipping_tax_number alanlarına sahip siparişleri filtreleyebilir ve uygulamada görüntüleyebilirsiniz.**/
add_filter( ‘woocommerce_order_data_store_cpt_get_orders_query’, ‘custom_mobile_app_order_data_store_cpt_get_orders_query’, 10, 2 );
function custom_mobile_app_order_data_store_cpt_get_orders_query( $query_args, $query ) {
if ( function_exists( ‘wc_mobile_apps’ ) && wc_mobile_apps()->is_active() ) {
$query_args[‘meta_query’][] = array(
‘relation’ => ‘OR’,
array(
‘key’ => ‘_shipping_tc’,
‘compare’ => ‘EXISTS’,
),
array(
‘key’ => ‘_shipping_tax_office’,
‘compare’ => ‘EXISTS’,
),
array(
‘key’ => ‘_shipping_tax_number’,
‘compare’ => ‘EXISTS’,
),
);
}
return $query_args;
}
Merhaba
Woocommerce cep uygulaması farklı dinamiklere sahip olduğu için kontrolü noktasında bir fikrim yok hocam. Bulmanız halinde bizlerle paylaşabilirseniz çok mutlu olurum.