Вопрос:
По умолчанию Woocommerce имеет два типа адресов, которые являются адресом биллинга и доставки, и эту информацию можно редактировать со страницы ” Моя учетная запись”, вы нажимаете ссылку “Изменить”, форма открывается в новом окне.
Но это то, что я хочу, чтобы страница учетной записи выглядела так:
Когда пользователь посещает страницу “Моя учетная запись”, я хотел бы, чтобы на этой же странице отображались как [биллинг (facturacion), так и адрес доставки (datos envio)]. Как я могу это достичь?
Я хочу иметь обе формы на одной странице вместо двух разных.
Я пытаюсь “разделить” обе формы и иметь их один рядом с другим на одной странице, вместо того, чтобы иметь их в двух разных страницах/экземплярах.
Файл-редактирование-адрес содержит формы.
Вот что я пробовал:
в начале кода, который он читает
$page_title = ( $load_address === ‘billing’ ) ? __( ‘Billing Address’, ‘woocommerce’ );
Я удалил бит доставки. но ломает все. ясно, здесь я должен немного нарезать биллинговые или транспортные формы, мой опыт ограничен php, поэтому я пытаюсь использовать всевозможные комбинации, такие как слепота. Может ли кто-нибудь помочь мне понять этот код, чтобы настроить его?
Это нетронутый код:
<?php /** * Edit address form * * @author WooThemes * @package WooCommerce/Templates * @version 2.1.0 */ if ( ! defined( ‘ABSPATH’ ) ) exit; // Exit if accessed directly global $woocommerce, $current_user; $page_title = ( $load_address === ‘billing’ ) ? __( ‘Billing Address’, ‘woocommerce’ ) : __( ‘Shipping Address’, ‘woocommerce’ ); get_currentuserinfo(); ?> <?php wc_print_notices(); ?> <?php if ( ! $load_address ) : ?> <?php wc_get_template( ‘myaccount/my-address.php’ ); ?> <?php else : ?> <form method=»post»> <h3><?php echo apply_filters( ‘woocommerce_my_account_edit_address_title’, $page_title ); ?></h3> <?php foreach ( $address as $key => $field ) : ?> <?php woocommerce_form_field( $key, $field, ! empty( $_POST[ $key ] ) ? wc_clean( $_POST[ $key ] ) : $field[‘value’] ); ?> <?php endforeach; ?> <p> <input type=»submit» class=»button big» name=»save_address» value=»<?php _e( ‘Save Address’, ‘woocommerce’ ); ?>» /> <?php wp_nonce_field( ‘woocommerce-edit_address’ ); ?> <input type=»hidden» name=»action» value=»edit_address» /> </p> </form> <?php endif; ?> Лучший ответ:
Вот как вы можете это сделать.
<?php // get the user meta $userMeta = get_user_meta(get_current_user_id()); // get the form fields $countries = new WC_Countries(); $billing_fields = $countries->get_address_fields( », ‘billing_’ ); $shipping_fields = $countries->get_address_fields( », ‘shipping_’ ); ?> <!— billing form —> <?php $load_address = ‘billing’; $page_title = __( ‘Billing Address’, ‘woocommerce’ ); ?> <form action=»/my-account/edit-address/billing/» class=»edit-account» method=»post»> <h2><?php echo apply_filters( ‘woocommerce_my_account_edit_address_title’, $page_title ); ?></h2> <?php do_action( «woocommerce_before_edit_address_form_{$load_address}» ); ?> <?php foreach ( $billing_fields as $key => $field ) : ?> <?php woocommerce_form_field( $key, $field, $userMeta[$key][0] ); ?> <?php endforeach; ?> <?php do_action( «woocommerce_after_edit_address_form_{$load_address}» ); ?> <p> <input type=»submit» class=»button» name=»save_address» value=»<?php esc_attr_e( ‘Save Address’, ‘woocommerce’ ); ?>» /> <?php wp_nonce_field( ‘woocommerce-edit_address’ ); ?> <input type=»hidden» name=»action» value=»edit_address» /> </p> </form> <!— shipping form —> <?php $load_address = ‘shipping’; $page_title = __( ‘Shipping Address’, ‘woocommerce’ ); ?> <form action=»/my-account/edit-address/shipping/» class=»edit-account» method=»post»> <h2><?php echo apply_filters( ‘woocommerce_my_account_edit_address_title’, $page_title ); ?></h2> <?php do_action( «woocommerce_before_edit_address_form_{$load_address}» ); ?> <?php foreach ( $shipping_fields as $key => $field ) : ?> <?php woocommerce_form_field( $key, $field, $userMeta[$key][0] ); ?> <?php endforeach; ?> <?php do_action( «woocommerce_after_edit_address_form_{$load_address}» ); ?> <p> <input type=»submit» class=»button» name=»save_address» value=»<?php esc_attr_e( ‘Save Address’, ‘woocommerce’ ); ?>» /> <?php wp_nonce_field( ‘woocommerce-edit_address’ ); ?> <input type=»hidden» name=»action» value=»edit_address» /> </p> </form>