WooCommerce sipariş alanları
5 dk okuma
Pro ve WooCommerce etkinken bir alan grubu, WooCommerce yönetiminde sipariş düzenleme ekranında görünebilir. Mağaza yöneticileri ek bilgileri (hediye notu, teslimat aralığı, dahili referans) doldurur; şablonlarınız ve e-postalarınız bunları wpmcf_get_order_field() ile okur.
Plan | Pro, Business ve Agency (özellik |
Gerekenler | WooCommerce etkin. İki sipariş depolaması da çalışır: HPOS (özel sipariş tabloları) ve yazı olarak saklanan klasik siparişler. |
Kutuların göründüğü yer | Yalnızca sipariş düzenleme ekranı: WooCommerce › Orders › {order} (HPOS sayfası |
Değerlerin kaydedildiği yer | Alan grubunun kendi tablosunda, |
Grubu oluşturma
- WPM Fields › Field Groups › Add field group. Alanlarınızı ekleyin.
- Şurada: Location, şu gruptan bir kural seçin: WooCommerce (yalnızca Pro ve WooCommerce etkinken bulunurlar):
Kural | Değerler | Eşleşir |
|---|---|---|
Order | All orders ( | Her sipariş. |
Order status | Her WooCommerce durumu ( | Şu anda bu durumda olan siparişler. |
- Grubu kaydedin, bir sipariş açın.
Bir grup siparişlerde yalnızca sipariş kuralı varsa gösterilir. Yazı türü kuralı olan bir grup siparişlerde gösterilmez, sipariş kuralı olan bir grup da yazılarda gösterilmez. Kuralları diğer kurallarla aynı şekilde ekleyin (bir kural kümesi içinde AND, kümeler arasında OR): Order status is equal to Processing OR Order status is equal to On hold.
"location": [
[ { "param": "wc_order_status", "operator": "equal", "value": "wc-processing" } ],
[ { "param": "wc_order_status", "operator": "equal", "value": "wc-on-hold" } ]
]Böyle bir grubu PHP'de de tanımlayabilirsiniz, bkz. PHP ile kaydedilen alan grupları; yukarıdakiyle aynı param ve value değerlerini kullanın.
Durumun nasıl değerlendirildiği
- Durum, ekran yüklendiğinde siparişin geçerli durumudur. Processing durumuna yerleştirilmiş bir grup, sipariş Completed olduğunda kaybolur.
- Bir yönetici durumu değiştirip kaydettiğinde WooCommerce önce yeni durumu uygular; eklenti ardından yeni durumu değerlendirir ve ona uyan grupları kaydeder. Yalnızca eski duruma uyan bir grup, o istekle gönderilen değerleri kaydetmez.
- Henüz kaydedilmemiş yeni bir siparişin durumu auto-draft (veya checkout-draft) olur; ilk kayıtta dönüşeceği durum olan Pending payment gibi ele alınır.
Sipariş ekranında
- Eşleşen her grup, başlığı grubun etiketi olan; açıklamasını ve alanlarını içeren bir kutu alır. Kutunun yeri grubun Position ayarına (
normal,side,high) ve Order değerine bağlıdır. Birden çok grup Order değerine göre sıralanır. - Stiller ve alan davranışı yazı düzenleme ekranındakiyle aynıdır: koşullu mantık, doğrulama iletileri, yönergeler, etiket yerleşimi.
- Kaydetme: sipariş yönetimde kaydedildiğinde (Create / Update) eşleşen her grup kaydedilir. Kayıt, grup başına bir nonce'u ve
edit_shop_ordersyetkisini denetler; böylece mağaza yöneticileri kaydedebilir, diğer kullanıcılar kaydedemez. - Gönderilen forma dahil olmayan bir alan değerini korur (doğrulandı).
- Password alanları yazılardaki gibi görüntülenir ancak
wpmcf_get_order_field()bunları asla döndürmez.
Değerler yalnızca sipariş yönetim ekranından kaydedildiğinde saklanır. Müşterilerin ödeme sırasında oluşturduğu siparişlerde, biri yönetimde kaydedene kadar değer olmaz; bu durumda okuma varsayılan değerinizi döndürür.
Değerleri okuma: wpmcf_get_order_field()
wpmcf_get_order_field( string $group_key, string $field_key, int|WC_Order $order, mixed $default = null ): mixedBağımsız değişken | Anlamı |
|---|---|
| Oluşturucudaki anahtarlar. |
| Bir sipariş kimliği veya bir |
| Hiçbir şey saklanmadığında, sipariş, grup veya alan bilinmediğinde, alan bir Password alanı olduğunda ya da eklenti hazır olmadığında döndürülür. |
Şunu döndürür: ham değer, kaçışsız ve biçimlendirilmemiş: Text alanı bir dizge, True / False true / false, Checkbox bir dizi, Select ise etiketi değil saklanan değeri verir. Yazdırdığınız yere göre kaçışlayın. Okuma için lisans gerekmez ve grubun etkin olup olmadığı denetlenmez.
İşlev yalnızca Pro sürümünde bulunur. Aynı kod Pro olmayan bir sitede de çalışabiliyorsa çağrıyı koruyun:
// Show the gift note in the "New order" and "Processing order" emails, below the order table.
add_action( 'woocommerce_email_after_order_table', function ( $order, $sent_to_admin, $plain_text ) {
if ( ! function_exists( 'wpmcf_get_order_field' ) ) {
return;
}
$note = wpmcf_get_order_field( 'order_extras', 'gift_note', $order );
if ( ! $note ) {
return;
}
if ( $plain_text ) {
echo "\n" . esc_html__( 'Gift note', 'my-theme' ) . ': ' . wp_strip_all_tags( $note ) . "\n";
} else {
echo '<p><strong>' . esc_html__( 'Gift note', 'my-theme' ) . ':</strong> ' . esc_html( $note ) . '</p>';
}
}, 20, 3 );Temanızın bir şablonunda (örneğin woocommerce/order/order-details.php veya teşekkür sayfası):
<?php
$slot = function_exists( 'wpmcf_get_order_field' )
? wpmcf_get_order_field( 'order_extras', 'delivery_slot', $order, '' )
: '';
if ( $slot ) : ?>
<p><?php echo esc_html( $slot ); ?></p>
<?php endif; ?>Seçenekleri olan bir alan için saklanan değeri kendiniz bir etikete eşleyin veya etiketi grup tanımından okuyun.
Yapamadıklarınız (şimdilik)
- Yazma işlevi yok. Değerler yalnızca sipariş ekranından oluşturulur.
wpmcf_update_field()vewpmcf_get_field()yazılara, kullanıcılara, terimlere, yorumlara ve seçeneklere hitap eder;wc_orderssatırlarına hitap etmez. - Sipariş alanları şunlarda yoktur: WooCommerce REST API, WooCommerce dışa aktarmaları, sipariş araması veya sipariş listesi sütunları.
- Kısa kodlar, bloklar ve oluşturucu dinamik etiketleri siparişleri değil, yazıları okur.
Veri yaşam döngüsü ve lisanslar
Durum | Kutular ve kaydetme | Değerler |
|
|---|---|---|---|
Plan özelliği içeriyor | Çalışır | Saklanır | Çalışır |
Deneme veya ücretli lisans sona erer (süresi dolar) ya da site Free plana düşer | Kapalı: kutu yok, kaydetme yok | Korunur | Yine çalışır (doğrulandı: lisans bitmeden önce saklanan bir değer yine döndürüldü ve lisans bittikten sonraki bir kaydetme denemesi onu değiştirmedi) |
Lisans geri gelir | Yeniden çalışır | Aynı değerler | Çalışır |
Sipariş kalıcı olarak silinir ( | Siparişin satırları silinir, her grup tablosundan | Varsayılanı döndürür | |
Sipariş çöp kutusuna taşınır | Korunur (satırları yalnızca kalıcı silme kaldırır) | Çalışır | |
Grup düzenleyicide silinir | Tablo grupla birlikte kaldırılır | Varsayılanı döndürür |
Konum kuralları wc_order ve wc_order_status lisans bittikten sonra da kayıtlı kalır (süresi dolmuş bir planda ve ücretsiz bir geliştirme planında doğrulandı), böylece bu kurallara sahip gruplar yine yüklenir ve düzenlenebilir. Ücretsiz WordPress.org sürümü Pro kodu içermez, dolayısıyla bu kuralları bilmez; böyle gruplarla ne yaptığı test edilmedi. Veri satırları her iki durumda da tablolarda kalır.
JSON'a dışa aktarma (Tools) süre dolduktan sonra da çalışır; değerler JSON dışa aktarmalarının parçası değildir.
Sınırlamalar ve notlar
- Kutular, ekran kimliği ve sipariş nesnesiyle
add_meta_boxesüzerinde geç eklenir (öncelik 20); sipariş ekranındaki tüm meta kutularını kaldıran bir eklenti bunları da kaldırır. - Eklenti, WooCommerce sorduğunda High-Performance Order Storage ile uyumluluğunu bildirir (
custom_order_tables) (before_woocommerce_init); böylece WooCommerce onu uyumsuz olarak listelemez. Yedek birFeaturesUtilile doğrulandı (çağrıtrueile yapılır); gerçek bir HPOS sitesi test edilmedi. - Satırlar, depolama ne olursa olsun sipariş kimliğiyle anahtarlanır. WooCommerce siparişlerinizin kimliklerini koruduğu sürece geçerli kalırlar.
Sorun giderme
Sorun | Kontrol |
|---|---|
Grup siparişte görünmüyor | Grup etkin ve bir Order veya Order status kuralına sahip; plan WooCommerce sipariş alanlarını içeriyor ve süresi dolmamış; WooCommerce etkin; tablosunun var olması için grup kaydedilmiş. |
Yalnızca Processing siparişlerinde görünüyor, Completed siparişlerinde görünmüyor | Konum kuralı durumu kullanır; ikinci bir kural kümesi ekleyin. |
Hiçbir şey kaydedilmiyor | Şuna ihtiyacınız var: |
| Pro sürümü etkin değil. Çağrıları |
E-posta hiçbir şey göstermiyor | Sipariş bir müşteri tarafından oluşturuldu ve yönetimde hiç kaydedilmedi ya da grup/alan anahtarı yanlış. İşlev varsayılan değerinizi döndürür. |
Hâlâ takıldınız mı? Destek ile iletişime geçin