Yönetici panelinde woocommerce siparişlerinde özel alan nasıl görüntülenir?


13

şu anda tarafından woocommerce özel bir faturalandırma alanı eklemek

function custom_override_checkout_fields( $fields ) {
     $fields['billing']['billing_phone_new'] = array(
        'label'     => __('Phone 2', 'woocommerce'),
    'placeholder'  => _x('Phone 2', 'placeholder', 'woocommerce'),
    'required'  => false,
    'class'     => array('form-row-wide'),
    'clear'     => true
     );

     return $fields;
}

add_filter('woocommerce_checkout_fields','custom_override_checkout_fields');

Yönetici tarafında bu alan değerini düzenlemek gerekiyor. Şu anda fatura adresindeki diğer tüm değerleri düzenleyebilirim, ancak bu değer yönetici bölümünde görünmüyor. Ben sadece yönetici bölümünde değeri görmek için aşağıdaki kodu kullanın.

function order_phone_backend($order){
    echo "<p><strong>Billing phone 2:</strong> " . get_post_meta( $order->id, '_billing_phone_new', true ) . "</p><br>";
} 

add_action( 'woocommerce_admin_order_data_after_billing_address', 'order_phone_backend', 10, 1 );

Https://docs.woothemes.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/ belgelerini okudum . Ancak bu belgedeki her şey doğru çalışıyor billing_phone / Telefon bekliyoruz Özel alanına bakın not. Ekran seçeneğini kontrol ediyorum ama zaten özel alanı işaretledim. Diğer özel alan ve değeri görünür ve düzenlenebilir.

Bu değeri arka uçta nasıl düzenleyebilirim? Lütfen yardım et .


Sorunuzdaki ilk kod bloğu, varsayılan 'Telefon no' alanını değiştirir. Ödeme formuna yeni bir alan eklemez. Ödeme alanları "özel alanlar" altında kullanılamayacağından, lütfen orada arama yapmayın. Alanın herhangi birini fatura adresinden veya gönderim adresinden düzenlemek istiyorsanız arka uca gidin ve sipariş listesinin altındaki herhangi bir siparişi tıklayın. Ardından, 'Fatura Ayrıntıları' ve 'Gönderim Ayrıntıları' başlıklarının yanında küçük bir düzenleme simgesi göreceksiniz. Buna tıklamak, bu ayrıntıları düzenlemenize izin verecektir. Umarım bu yardımcı olur.
Prasad Nevase

Lütfen şimdi kodumu kontrol et
Ron

Yanıtlar:


22

Girdiğiniz kod eksik. İstediğinizi elde etmek için kullandığınız tek kodun bu olduğundan emin değilim. Bu nedenle, sağladığınız ilk kod bloğunun yanı sıra, 'Sipariş Ayrıntıları' kutusunda yeni alanı göstermek ve özel alanlarda düzenlenebilir hale getirmek için gerekli olan kodun geri kalanını ekliyorum. Lütfen ikinci kod bloğunuzda alan anahtarını olarak adlandırdığınızı unutmayın _billing_new_phone. _ (Alt çizgi) ile başlayan herhangi bir özel alan anahtarı adı gizli bir özel alandır ve "Özel Alanlar" altında arka uçta görünmez.

/**
 * Process the checkout
 */
add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');

function my_custom_checkout_field_process() {
    // Check if set, if its not set add an error.
    if ( ! $_POST['billing_phone_new'] )
        wc_add_notice( __( 'Phone 2 is compulsory. Please enter a value' ), 'error' );
}


/**
 * Update the order meta with field value
 */
add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' );

function my_custom_checkout_field_update_order_meta( $order_id ) {
    if ( ! empty( $_POST['billing_phone_new'] ) ) {
        update_post_meta( $order_id, 'billing_phone_new', sanitize_text_field( $_POST['billing_phone_new'] ) );
    }
}


/**
 * Display field value on the order edit page
 */
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>'.__('Phone 2').':</strong> <br/>' . get_post_meta( $order->get_id(), 'billing_phone_new', true ) . '</p>';
}

WooCommerce, yeni ödeme alanını standart 'Sipariş Ayrıntıları' kutusu altında düzenlenebilir yapmaz. Bu kutuda 'salt görüntüleme' modu olarak kullanılabilir, ancak WordPress 'standart özel alanlar bloğundan da düzenleyebilirsiniz. Aşağıdaki ekran görüntüsüne bakın.

resim açıklamasını buraya girin


"" _ (Alt çizgi) ile başlayan herhangi bir özel alan anahtarı adı gizli bir özel alandır ve "Özel Alanlar" altında arka uçta görünmez. "" bu bilgiyi nereden aldınız?
Ron

2
WordPress kodeksinde. Daha fazla bilgiyi burada bulabilirsiniz
Prasad Nevase

Lütfen arkadaşımın sorusunu çözmemize yardım et stackoverflow.com/questions/49505056/…
Ron

benim durumumda get_post_meta ($ order-> get_id (), '_billing_phone_new', true) kullanarak sonuç aldım. Get_post_meta işlevinde değişken adının önüne alt çizgi koymak zorunda kaldı.
Dashrath

0

İşte çözüm: Doğrudan ürün verilerine erişime izin verilmez, ör.

$product->id

İleride doğru yöntem şöyledir:

$product->get_id()

Bu soruyu nasıl cevaplıyor?
Tofandel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.