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 .
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.
Zde je řešení: Přístup k produktům přímo není povolen, např.
$product->id
Správná metoda bude:
$product->get_id()