WooCommerce E-postasına Özel Ödeme Alanı Nasıl Eklenir?
Yayınlanan: 2020-12-17 WooCommerce mağazanızda e-postaya özel bir ödeme alanı eklemek ister misiniz?
WooCommerce, WordPress için özelleştirmeye karşı esnek olan güçlü bir e-Ticaret eklentisidir.
Bu gönderide, fatura adresini kaldırma, özel ödeme alanları ekleme/düzenleme ve bu özel alanları veritabanına kaydetme gibi ek alanları dinamik olarak nasıl özelleştirebileceğinizi göreceksiniz. Ek olarak, e-posta sipariş etmek için bu özel alanları nasıl ekleyebileceğinizi göstereceğim.
Özel Ödeme Alanlarından Ek Bilgileri Kaldırın
İlk adım, adres alanlarını faturalandırma ekranından kaldırmak için temanızın function.php dosyasına özel bir PHP kod parçacığı eklemektir:
function woocommerce_remove_additional_information_checkout($fields){ unset( $fields["billing_first_name"] ); unset( $fields["billing_last_name"] ); $alanlarını döndür; } add_filter('woocommerce_billing_fields', 'woocommerce_remove_additional_information_checkout');
Bu sonuç:
Aşağıdaki kod parçacıkları, ödeme sayfasına özel bir alan ekleyecek, verileri sipariş metasına kaydedecek ve sipariş metasını sipariş yöneticisinde görüntüleyecektir. Birden çok alan ekleme işlemi hakkında birkaç soru aldım. Sorunu çözmeye yardımcı olmak için iki alan eklemek için bir kod parçacığı ekleyeceğiz.
WooCommerce E-postasına Özel Ödeme Alanı Ekle
Kod parçacıkları temanızın functions.php dosyasına eklenmelidir. Yükseltme sırasında değişikliklerinizin kaybolmaması için bir alt tema kullanmanızı öneririm.
1. WooCommerce Özel Ödeme Alanı Ekleyin
Özel bir WooCommerce ödeme alanı eklemek için function.php dosyasına aşağıdaki kodu ekleyin:
function njengah_custom_checkout_fields($fields){ $fields['njengah_extra_fields'] = dizi( 'njengah_text_field' => dizi( 'tür' => 'metin', 'gerekli' => doğru, 'label' => __( 'Giriş Metin Alanı' ) ), 'njengah_dropdown' => dizi( 'tür' => 'seç', 'seçenekler' => dizi( 'birinci' => __( 'Birinci Seçenek' ), 'ikinci' => __( 'İkinci Seçenek' ), 'üçüncü' => __( 'Üçüncü Seçenek' ) ), 'gerekli' => doğru, 'etiket' => __( 'Açılır alan' ) ) ); $alanlarını döndür; } add_filter('woocommerce_checkout_fields', 'njengah_custom_checkout_fields'); function njengah_extra_checkout_fields(){ $checkout = WC()->checkout(); ?> <div class="ekstra alanlar"> <h3><?php _e('Ek Alanlar'); ?></h3> <?php foreach ( $checkout->checkout_fields['njengah_extra_fields'] as $key => $field ): ?> <?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?> <?php endforeach; ?> </div> <?php } add_action('woocommerce_checkout_after_customer_details','njengah_extra_checkout_fields');
Bu sonuç:
2. Özel Ödeme WooCommerce Alanlarının Verilerini Kaydedin
Özel ödeme WooCommerce alanlarının verilerini kaydetmek için function.php dosyasına aşağıdaki kodu ekleyin.
function njengah_save_extra_checkout_fields($order_id, $gönderildi){ // farklı bir alan türü kullanıyorsanız uygun temizlemeyi unutmayın if( isset( $gönderildi['njengah_text_field'] ) ) { update_post_meta( $order_id, '_njengah_text_field', sanitize_text_field( $yayınlandı['njengah_text_field'] ) ); } if( isset( $gönderildi['njengah_dropdown'] ) && in_array( $gönderildi['njengah_dropdown'], dizi( 'ilk', 'ikinci', 'üçüncü' )) ) { update_post_meta( $order_id, '_njengah_dropdown', $yayınlandı['njengah_dropdown'] ); } } add_action( 'woocommerce_checkout_update_order_meta', 'njengah_save_extra_checkout_fields', 10, 2);
3. WooCommerce Özel Alanlarının Verilerini Kullanıcıya Gösterin
WooCommerce özel alanlarının verilerini kullanıcıya görüntülemek için function.php dosyasına aşağıdaki kodu ekleyin.
function njengah_display_order_data( $order_id ){ ?> <h2><?php _e('Ek Bilgi'); ?></h2> <table class="shop_table shop_table_responsive ek_bilgi"> <vücut> <tr> <th><?php _e( 'Giriş Metin Alanı:' ); ?></th> <td><?php echo get_post_meta( $order_id, '_njengah_text_field', true ); ?></td> </tr> <tr> <th><?php _e( 'Aşağı Açılan Alan:' ); ?></th> <td><?php echo get_post_meta( $order_id, '_njengah_dropdown', true ); ?></td> </tr> </tbody> </tablo> <?php } add_action('woocommerce_thankyou', 'njengah_display_order_data', 20); add_action('woocommerce_view_order', 'njengah_display_order_data', 20);
Bu sonuç:

4. WooCommerce Admin Özel Sipariş Alanlarını Görüntüle
Bu kod parçacığı, gönderim ve fatura adresi verileri olarak işlev görecek ve kullanıcı küçük kalem simgesini tıkladığında girdileri ortaya çıkaracaktır.
function njengah_display_order_data_in_admin( $sipariş ){ ?> <div class="order_data_column"> <h4><?php _e('Ek Bilgi', 'woocommerce'); ?><a href="#" class="edit_address"><?php _e( 'Düzenle', 'woocommerce'); ?></a></h4> <div class="adres"> <?php yankı '<p><strong>' . __( 'Metin alanı' ) . ':</strong>' . get_post_meta( $order->id, '_njengah_text_field', true ) . '</p>'; yankı '<p><strong>' . __( 'Yıkılmak' ) . ':</strong>' . get_post_meta( $order->id, '_njengah_dropdown', true ) . '</p>'; ?> </div> <div class="edit_address"> <?php woocommerce_wp_text_input( array( 'id' => '_njengah_text_field', 'label' => __( 'Bazı alan'), 'wrapper_class' => '_billing_company_field' ) ); ?> <?php woocommerce_wp_text_input( array( 'id' => '_njengah_dropdown', 'label' => __( 'Başka bir alan' ), 'wrapper_class' => '_billing_company_field' ) ); ?> </div> </div> <?php } add_action('woocommerce_admin_order_data_after_order_details', 'njengah_display_order_data_in_admin'); function njengah_save_extra_details( $post_id, $post ){ update_post_meta( $post_id, '_njengah_text_field', wc_clean( $_POST[ '_njengah_text_field' ] ) ); update_post_meta( $post_id, '_njengah_dropdown', wc_clean( $_POST[ '_njengah_dropdown' ] ) ); } add_action('woocommerce_process_shop_order_meta', 'njengah_save_extra_details', 45, 2);
Bu sonuç:
5. E-postaları Sipariş Etmek için WooCommerce Özel Alanları Ekleyin
E-postaları sipariş etmek için WooCommerce özel alanları eklemek için function.php dosyasına aşağıdaki kodu ekleyin. E-postalardaki çıktıyı özelleştirmek isterseniz, e-posta şablonlarında bulunan kancalardan herhangi birine biraz metin ekleyebilirsiniz.
function njengah_email_order_meta_fields( $alanlar, $sent_to_admin, $sipariş) { $fields['instagram'] = dizi( 'etiket' => __( 'Bazı alan' ), 'değer' => get_post_meta( $order->id, '_njengah_text_field', true ), ); $alanlar['lisans'] = dizi( 'etiket' => __( 'Başka bir alan' ), 'value' => get_post_meta( $order->id, '_njengah_dropdown', true ), ); $alanlarını döndür; } add_filter('woocommerce_email_order_meta_fields', 'njengah_email_order_meta_fields', 10, 3 ); function njengah_show_email_order_meta( $sipariş, $sent_to_admin, $plain_text) { $njengah_text_field = get_post_meta( $order->id, '_njengah_text_field', true ); $njengah_dropdown = get_post_meta( $order->id, '_njengah_dropdown', true ); if( $düz_metin ){ echo 'Bazı alanların değeri ' dir. $njengah_text_field . ' başka bir alanın değeri ise ' . $njengah_dropdown; } Başka { echo '<p><strong>giriş metin alanı</strong> için değer ' dir. $njengah_text_field. ' <strong>açılır menü</strong> değeri ise ' . $njengah_dropdown . '</p>'; } } add_action('woocommerce_email_customer_details', 'njengah_show_email_order_meta', 30, 3 );
Çözüm
Özetle, WooCommerce ödeme sayfasına nasıl özel alanlar ekleyebileceğinizi, düzenleyebileceğinizi ve kaydedebileceğinizi gösterdim. Ek olarak, e-postaların özel alanlarındaki bilgileri eklemek için e-posta şablonlarını düzenledim. Ödeme sayfasını daha fazla özelleştirmeniz gerekirse, bir ödeme özelleştirme eklentisi kullanabilirsiniz.
Benzer Makaleler
- Ürün Sayfasına WooCommerce Özel Metin Alanı Nasıl Eklenir
- Adım Adım WordPress'te Özel Widget Alanı Nasıl Oluşturulur
- Birincil Menü Vitrin WooCommerce Nasıl Taşınır
- Ücretsiz Gönderim Varsa Kargo Ücretlerini Gizleme WooCommerce
- WooCommerce'de Stoktaki Miktar Nasıl Gizlenir
- SKU, Kategori, Etiketler Nasıl Gizlenir Meta Ürün Sayfası WooCommerce
- Sepeti Güncelle Düğmesini Gizleme WooCommerce Sepet Sayfası
- WooCommerce Başlığı Ürün Açıklaması Nasıl Gizlenir
- Herhangi Bir Sekme Nasıl Gizlenir Hesap Sayfam WooCommerce
- WooCommerce Ödeme Hata Mesajları Nasıl Değiştirilir