it-swarm-eu.dev

Jak zobrazit vlastní pole v objednávkách woocommerce v panelu administrátora?

v současné době přidávám vlastní pole fakturace ve woocommerce

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');

potřebuji upravit hodnotu tohoto pole na straně administrátora. V současné době mohu editovat všechny ostatní hodnoty ve fakturační adrese, ale tato hodnota se nezobrazuje v sekci admin. Následující kód používám pouze pro zobrazení hodnoty v sekci admin.

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 );

Přečetl jsem si dokumentaci https://docs.woothemes.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/ . Všechno, co v tomto dokumentu pracuje správně, ale předpokládá billing_phone/Phone, je uvedeno v části Vlastní pole. Zaškrtávám volbu obrazovky, ale už jsem zaškrtnul vlastní pole. Ostatní vlastní pole a jeho hodnota jsou viditelné a upravitelné.

Jak lze tuto hodnotu upravit na konci. Prosím pomozte .

8
Ron

Zadaný kód je neúplný. Nejste si jisti, zda je to jediný kód, který používáte k dosažení toho, co chcete. Kromě prvního kódu kódu, který jste zadali, přidávám další zbytek kódu, který je nutný pro zobrazení nového pole v backendu v poli „Podrobnosti objednávky“ a upravení pomocí vlastních polí. Vezměte prosím na vědomí, že ve vašem druhém bloku kódu jste označili klíč pole jako _billing_new_phone. Jakýkoliv vlastní klíčový název pole, který začíná znakem _ (podtržítko), je skryté vlastní pole a nezobrazí se na pozadí v části Vlastní pole.

/**
 * 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 nezpracovává nové pole pro kontrolu pod jeho standardním rámečkem „Podrobnosti objednávky“. To bude k dispozici jako 'zobrazit pouze' režim v tomto poli, ale můžete upravovat stejné prostřednictvím standardního bloku bloků WordPress '. Viz níže screenshot.

 enter image description here 

17
Prasad Nevase

Zde je řešení: Přístup k produktům přímo není povolen, např.

$product->id

Správná metoda bude:

$product->get_id()
1
Gaël