WooCommerce Ödeme Bilgileri Alanları Sistemi Genel Bakışı
WooCommerce’in ödeme sayfası, e-ticaret sürecinde müşteri bilgilerinin toplanmasında kritik bir adımdır ve esnekliği ile genişletilebilirliği, modüler alan sisteminin avantajlarından büyük ölçüde yararlanmaktadır. Bu sistem, kullanıcıların doldurması gereken tüm bilgileri (isim, adres, iletişim bilgileri vb.) yapılandırılmış, çok boyutlu bir ilişkili dizi (array) şeklinde organize eder. Bu dizi, sadece alanların etiketlerini ve türlerini tanımlamakla kalmaz; aynı zamanda bunların görünüm sırasını, zorunluluk durumlarını, doğrulama kurallarını ve CSS sınıflarını da kontrol eder.
Tüm sistemin çekirdeği şudur: class-wc-checkout.php Dosya ve içindekiler… WC_Checkout Sınıflar. Tüm alanlar, kullanımlarına göre birkaç ana “alan grubuna” ayrılmıştır ve en sık kullanılanlar… billing(Fatura alanları)shipping(Delivery field) ve order(Sipariş notları gibi alanlar.) Her alan kümesi, birden fazla alan tanımını içeren bir dizi olarak kabul edilir. Bu hiyerarşiyi anlamak, herhangi bir özelleştirme işlemi yapmanın ilk adımıdır; çünkü tüm değişiklikler bu genel alan dizisini işlemek etrafında gerçekleşir. Geliştiricilerin temel dosyaları doğrudan değiştirmesine gerek kalmaz; bunun yerine, özenle tasarlanmış eylemler ve filtreler aracılığıyla bu sürece müdahale ederler. Bu yaklaşım, özelleştirilmiş özelliklerin sürdürülebilirliğini ve gelecekteki sürümlerle uyumluluğunu sağlar.
Yerleşik kancaları kullanarak alanları ekleyin ve değiştirin.
WooCommerce, geliştiricilerin ödeme sırasında kullanılan alanları güvenli bir şekilde eklemelerine, silmelerine, değiştirmelerine ve sorgulamalarına olanak tanıyan güçlü ve kullanımı kolay bir “Hook” (Kancalar) sistemi sunar. Bu, özelleştirilmiş geliştirmeler için standart bir yaklaşımdır ve çekirdek şablon dosyalarını doğrudan değiştirmenin getirdiği bakım zorluklarını önler.
Tavsiye edilen okuma WooCommerce e-ticaret web sitesi performans optimizasyonu ve gelişmiş eklenti geliştirme uygulama rehberi。
Bir ödeme formuna nasıl yeni bir alan eklenir?
Ödeme sayfasına yeni bir alan eklemek istiyorsanız, örneğin müşterilerin “Fatura Başlığı Türü”nü seçebilecekleri bir onay kutusu gibi, şu adımları izlemeniz gerekmektedir: woocommerce_checkout_fields Filtre: Bu filtre, tam ödeme bilgileri dizisini geliştirici fonksiyonuna aktarır, böylece herhangi bir alan kümesine (örneğin…) erişebilirsiniz. billingYeni bir giriş ekleyin.
function add_invoice_title_field( $checkout_fields ) {
$checkout_fields['billing']['billing_invoice_type'] = array(
'type' => 'select',
'label' => '发票抬头',
'required' => true,
'options' => array(
'personal' => '个人',
'company' => '单位'
),
'class' => array('form-row-wide'),
'priority' => 21, // 紧跟在“公司名称”字段之后
);
return $checkout_fields;
}
add_filter( 'woocommerce_checkout_fields', 'add_invoice_title_field' ); Yukarıdaki kod, fatura alanlarında bir açılır menü (drop-down seçim kutusu) oluşturur. Her alan tanımı, ilgili verilerin bulunduğu bir dizi (array) şeklindedir. type, label, required Belirli anahtar-değer çiftleri, bir alanın davranışını ve görünümünü belirler.priority Parametreler çok önemlidir; bu parametreler, ilgili alanın formda gösterim sırasını kontrol eder. Sayı ne kadar küçükse, alan o kadar önde yer alır.
Mevcut alanların özelliklerini değiştirin veya silin.
İş ihtiyaçları, varsayılan alanların ayarlanmasını gerektirebilir. Örneğin, bazı bölgelerde “posta kodu” alanının zorunlu olmaması veya “eyalet/provins” alanının gizlenmesi gerekebilir. Bu ayarlamalar da ilgili işlemler aracılığıyla yapılır. woocommerce_checkout_fields Filtreler, bir dizi olarak uygulanır.
function adjust_default_fields( $fields ) {
// 将账单邮编字段设为非必填
$fields['billing']['billing_postcode']['required'] = false;
// 完全移除账单州/省字段
unset( $fields['billing']['billing_state'] );
// 更改邮箱字段的占位符文本
$fields['billing']['billing_email']['placeholder'] = '用于接收订单确认信';
return $fields;
}
add_filter( 'woocommerce_checkout_fields', 'adjust_default_fields' ); geçmek (bir fatura veya teftiş vb.) unset() Bir fonksiyon, bir alanı tamamen silebilir. Çoğu durumda ise, bir dizi içindeki belirli bir özelliği (örneğin) yenileyerek bunu yaparsınız. required, label, classBu, alanların davranışını değiştirmek için kullanılır.
Alan doğrulama ve veri kalıcılığı (Field validation and data persistence)
Ön tarafta alanları göstermek sadece ilk adımdır. Veri kalitesini sağlamak için, kullanıcı girdilerinin doğrulanması gerekmektedir ve doğrulanmış verilerin siparişe güvenilir bir şekilde kaydedilmesi şarttır. Bu süreç, ön tarafta anlık doğrulama (isteğe bağlı ancak kullanıcı deneyimini iyileştirir) ve arka tarafta gönderim sırasında doğrulama (zorunludur) olmak üzere iki aşamadan oluşur.
Tavsiye edilen okuma WooCommerce E-Ticaret Sitesi Performans Optimizasyonu Kılavuzu: Yapılandırmadan Önbelleğe Kadar Her Şey。
Arka uç doğrulama mantığını uygula.
Kullanıcı “Sipariş Ver” butonuna tıkladığında, WooCommerce ödeme işlemini doğrulamak için gerekli adımları gerçekleştirir. Geliştiriciler bu süreci kullanabilirler. woocommerce_checkout_process Eylem kancaları, özel doğrulama kurallarının eklenmesi için kullanılır. Doğrulama başarısız olursa, ilgili işlemin çağrılması gerekir. wc_add_notice() Fonksiyon, kullanıcıya hata mesajı gösterir ve siparişin oluşturulmasını engeller.
function validate_custom_fields_during_checkout() {
// 检查自定义的“发票抬头”字段
if ( isset( $_POST['billing_invoice_type'] ) && $_POST['billing_invoice_type'] == 'company' ) {
// 如果选择了“单位”发票,则检查是否填写了公司名称
if ( empty( $_POST['billing_company'] ) ) {
wc_add_notice( '选择“单位”发票抬头时,必须填写公司名称。', 'error' );
}
}
// 验证一个自定义的文本字段,确保其格式
if ( ! empty( $_POST['billing_custom_id'] ) && ! preg_match( '/^CUSTd{6}$/', $_POST['billing_custom_id'] ) ) {
wc_add_notice( '客户编号格式错误,应为 CUST 后接6位数字。', 'error' );
}
}
add_action( 'woocommerce_checkout_process', 'validate_custom_fields_during_checkout' ); Alan değerlerini sipariş meta verilerine kaydedin.
Doğrulama başarılı olduktan sonra, bir sonraki adım sipariş oluşturulurken özel alanların değerlerinin kalıcı olarak kaydedilmesidir. Bu, şu şekilde yapılır: woocommerce_checkout_update_order_meta Eylem kancası tamamlandı. Bu kanca, sipariş oluşturulduktan sonra tetiklenir ve siparişin ID’sini iletir. WordPress’i kullanmanız gerekir. update_post_meta() Bu fonksiyon, form verilerini sipariş bilgileri olarak saklar.
function save_custom_checkout_field_data( $order_id ) {
// 保存发票类型
if ( ! empty( $_POST['billing_invoice_type'] ) ) {
update_post_meta( $order_id, '_billing_invoice_type', sanitize_text_field( $_POST['billing_invoice_type'] ) );
}
// 保存客户编号
if ( ! empty( $_POST['billing_custom_id'] ) ) {
update_post_meta( $order_id, '_billing_custom_id', sanitize_text_field( $_POST['billing_custom_id'] ) );
}
}
add_action( 'woocommerce_checkout_update_order_meta', 'save_custom_checkout_field_data' ); Depolama sırasında, alt çizgi ile başlayan bir önek içeren anahtar adları kullanın (örneğin: _billing_invoice_typeBu, ilgili alanın arka planda sipariş düzenleme sayfasındaki “Özel Alanlar” meta veri kutusunda görünmesini engelleyen bir kuraldır; bu sayede yöneticilerin yanlış işlemler yapmasını önler. Lütfen mutlaka bunu kullanın. sanitize_text_field() Bu tür fonksiyonlar, güvenlik risklerini önlemek amacıyla verileri temizler.
Siparişle ilgili arayüzde özelleştirilmiş verileri gösterin.
Verileri kaydettikten sonra, genellikle birçok yerde yeniden görüntülenmesi gerekir: 1) WordPress yönetim panelindeki sipariş yönetimi ekranı; 2) Ön uç kullanıcıların “Hesabım” bölümündeki sipariş detayları sayfası; 3) Müşterilere ve yöneticilere gönderilen sipariş e-postaları. Bu, işlem bilgilerinin bütünlüğünü ve şeffaflığını sağlar.
Arka planda, sipariş detayları sayfasına özel alanlar entegre edilmiştir.
Yöneticilerin arka planda müşterilerin girdiği bilgileri kolayca görebilmeleri için, kaydedilen sipariş meta verilerini sipariş düzenleme sayfasına aktarmanız gerekiyor. Bunu yapmak için… woocommerce_admin_order_data_after_billing_address 和 woocommerce_admin_order_data_after_shipping_address Bu “düğüm” (hook), içeriği mevcut bilgilerin ardına eklemek için kullanılabilir.
function display_custom_order_meta_in_admin( $order ) {
$invoice_type = get_post_meta( $order->get_id(), '_billing_invoice_type', true );
if ( $invoice_type ) {
$display_type = ( $invoice_type == 'company' ) ? '单位' : '个人';
echo '<p><strong>Fatura Alıcı Adı Türü:</strong> '`. esc_html($display_type)`.'</p>';
}
$custom_id = get_post_meta( $order->get_id(), '_billing_custom_id', true );
if ( $custom_id ) {
echo '<p><strong>Müşteri Numarası:</strong> '`. esc_html($custom_id)`.'</p>';
}
}
add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_custom_order_meta_in_admin' ); Verileri ön tarafta ve e-postalarda gösterin.
Müşterilerin de sundukları bilgileri görebilmeleri için, ön yüzdeki sipariş görünüm şablonunu ve e-posta içeriğini de değiştirmeniz gerekecek. Sipariş detayları sayfası için şunları kullanabilirsiniz: woocommerce_order_details_after_order_table Kancalar. E-posta durumunda bunların kullanılması gerekmektedir. woocommerce_email_order_meta_keys Filtre, özelleştirilmiş meta veri anahtarlarını e-posta sistemine bildirir; bu sayede bu veriler otomatik olarak e-posta içeriğine eklenir.
Tavsiye edilen okuma WordPress Eklenti Geliştirme Becerilerini Kazanın: Sıfırdan Başlayarak Verimli ve Özelleştirilebilir İşlev Modülleri Oluşturun。
// 在前台“查看订单”页面显示
function display_custom_data_in_order_view( $order ) {
$custom_id = get_post_meta( $order->get_id(), '_billing_custom_id', true );
if ( $custom_id ) {
echo '<h2>Ek Bilgiler</h2><table class="shop_table custom-info"><tbody><tr><th>Müşteri Numarası:</th><td>'`. esc_html($custom_id)`.'</td></tr></tbody></table>';
}
}
add_action( 'woocommerce_order_details_after_order_table', 'display_custom_data_in_order_view' );
// 将自定义字段加入订单邮件
function add_custom_field_to_emails( $keys ) {
$keys[] = '_billing_custom_id'; // 这个键对应的值会被加入到邮件中
$keys[] = '_billing_invoice_type';
return $keys;
}
add_filter( 'woocommerce_email_order_meta_keys', 'add_custom_field_to_emails' ); Özetle.
WooCommerce’te özel ödeme sayfası alanları oluşturmak, arayüzde gösterimden veri depolamaya kadar olan tüm süreci kapsayan bir geliştirme işlemidir. Bunun temelinde, WooCommerce’un sağladığı “hook” (düğüm) sistemini anlamak ve bunu esnek bir şekilde kullanmak yatar. woocommerce_checkout_fields Filtreler, alan yapısını tanımlamak ve değiştirmek için kullanılır; bunu yaparak… woocommerce_checkout_process Eylem, gerekli doğrulama mantığını uygular; yardımıyla… woocommerce_checkout_update_order_meta Eylem, geçerli verileri kalıcı hale getirir; son olarak, çeşitli görüntüleme ile ilgili araçları (hook’ları) kullanır… woocommerce_admin_order_data_after_billing_address 和 woocommerce_email_order_meta_keysVerileri arka planda, ön planda ve e-postalarda gösterin. Bu modeli takip ederek, geliştiriciler güçlü, stabil ve iş ihtiyaçlarına sıkı sıkıya uygun bir ödeme deneyimi oluşturabilirler; aynı zamanda kodun bakımını ve yükseltme güvenliğini de sağlarlar.
Sıkça Sorulan Sorular.
Özel alanlara doğrulama kuralları ekleyebilir miyiz, örneğin yalnızca sayıların girilmesine izin vermek gibi?
Tabii ki, bu makalenin “Alan Doğrulama ve Veri Kalıcılığı” bölümünde de belirtildiği gibi, bunu yapabilirsiniz. woocommerce_checkout_process Kancanın geri çağırma fonksiyonunda herhangi bir PHP doğrulama mantığını yazabilirsiniz. Örneğin, şunu kullanabilirsiniz: is_numeric() Function or regular expression preg_match() Alan değerinin tamamen sayısal olup olmadığını kontrol edin. Doğrulama başarısız olursa, ilgili işlemi gerçekleştirin. wc_add_notice() Hatanın görünmesi yeterli.
Bir özel alanın yalnızca belirli bir teslimat yöntemi için görünmesini nasıl sağlayabilirim?
Bu, koşullu mantık kararlarının birleştirilmesini gerektirir. Alan eklerken veya değiştirirken, mevcut alışveriş sepetindeki veya oturumdaki teslimat yöntemini kontrol edebilirsiniz. Örneğin, şu şekilde yapabilirsiniz: WC()->session->get('chosen_shipping_methods') Seçilen teslimat yöntemi ID’sini alın. Eğer gereken koşulları karşılamıyorsa, başka bir yöntem kullanılabilir. unset() Bu alanı alan dizisinden kaldırın, veya belirli bir CSS sınıfı ekleyerek bunu yapın (örneğin: `.removeField` veya `.applyClassName`). hiddenJavaScript ile dinamik olarak gösterilir/gizlenir.
Alanları değiştirdim, ancak ödeme sayfasında herhangi bir değişiklik olmadı. Bunun nedeni olabilir?
Öncelikle, özel kodunuzun doğru bir şekilde çalıştığından emin olun (örneğin, temanın…). functions.php Dosyada herhangi bir dilbilgisi hatası bulunmamaktadır. İkincisi, kodun mantığını kontrol edin ve değiştirdiğiniz alan dizisi anahtar adlarının doğru olduğundan emin olun (örneğin…). billing Yine de. shippingArdından, nesne önbelleği, sayfa önbelleği ve tarayıcı önbelleği dahil olmak üzere mevcut tüm önbellekleri temizleyin. Son olarak, çatışmaları ortadan kaldırmak için varsayılan temaya (örneğin Storefront) geçmeyi ve diğer eklentileri devre dışı bırakmayı deneyin.
Kaydedilen özel alan verileri, sonraki sipariş aramalarında veya rapor analizlerinde kullanılabilir mi?
Tabii ki, ancak bazı ek adımlar gerekebilir. Veriler siparişlerin “Post Meta” bilgileri olarak saklandığı için, WordPress’in meta veri sorgulama özelliklerini kullanarak siparişleri geri çağırabilirsiniz. WooCommerce arayüzündeki sipariş listesinde arama yapmak için, özel alanları destekleyen eklentiler kullanmanız veya varsayılan arama işlevlerini genişletmek için kod yazmanız gerekebilir. Rapor oluşturma konusunda ise, gelişmiş raporlama eklentileri genellikle sipariş meta verilerini filtreleme ve gösterme işlemlerine dahil etme seçenekleri sunar. Alan verilerini CSV formatında dışa aktarmak ise, kullanılan dışa aktarma aracının özel meta veri sütunlarını seçebilme özelliğine bağlıdır.
Bir sonraki adım, bundan sonra ne yapmalıyım?
Daha fazla okuma ve pratik bilgiler.
Aşağıdaki içerikler bu makalenin konusuyla ilgilidir ve daha fazla okumak için uygundur. Öncelikle mevcut sorununuza en yakın makaleden başlayın, sonra çevresel konulara doğru ilerleyin, genellikle daha iyi sonuçlar alırsınız.
- WooCommerce Genel Site Önbellekleme Optimizasyon Kılavuzu: WordPress E-ticaret Sitelerinin Hızını ve Dönüşüm Oranlarını Artırma
- 2026 WooCommerce Kurulumu ve Tema Seçimi Kılavuzu
- WooCommerce ile Web Sitesi Kurma Kılavuzu: Sıfırdan Başlayarak Profesyonel Bir E-Ticaret Sitesi Oluşturma
- WooCommerce Çince Tam Kullanım Kılavuzu: Sıfırdan Kendi Çevrimiçi Mağazanızı Kurmak
- WooCommerce ödeme sayfasını nasıl özelleştirerek dönüşüm oranlarını artırabilirsiniz?