2

我在 WooCommerce 中编辑新地址类型时遇到困难。除了运输和账单,我还添加了另一种地址,个人地址。

我希望用户更改我帐户上的数据/编辑我的地址页面。

我可以完美地显示个人地址的数据,但是当用户单击edit时,它应该为这些字段加载表单。

这些是文件:

我的帐户.php

<?php
/**
 * My Addresses
 *
 * @author      WooThemes
 * @package     WooCommerce/Templates
 * @version     2.0.0
 */

if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

global $woocommerce;

$customer_id = get_current_user_id();

if ( get_option('woocommerce_ship_to_billing_address_only') == 'no' ) {
    $page_title = apply_filters( 'woocommerce_my_account_my_address_title', __( 'My Addresses', 'woocommerce' ) );
    $get_addresses    = array(
        //Added PD
        'personal' => __( 'Personal Address', 'woocommerce' ),
        //
        'billing' => __( 'Billing Address', 'woocommerce' ),

        'shipping' => __( 'Shipping Address', 'woocommerce' )
    );
} else {
    $page_title = apply_filters( 'woocommerce_my_account_my_address_title', __( 'My Address', 'woocommerce' ) );
    $get_addresses    = array(
        'billing' =>  __( 'Billing Address', 'woocommerce' ),
        // Added PD
        'personal' => __( 'Personal Address', 'woocommerce' )
        //
    );
}

$col = 1;
?>

<h2><?php echo $page_title; ?></h2>

<p class="myaccount_address">
    <?php echo apply_filters( 'woocommerce_my_account_my_address_description', __( 'The following addresses will be used on the checkout page by default.', 'woocommerce' ) ); ?>
</p>

<?php if ( get_option('woocommerce_ship_to_billing_address_only') == 'no' ) echo '<div class="col2-set addresses">'; ?>

<?php foreach ( $get_addresses as $name => $title ) : ?>

    <div class="col-<?php echo ( ( $col = $col * -1 ) < 0 ) ? 1 : 2; ?> address">
        <header class="title">
            <h3><?php echo $title; ?></h3>
            <a href="<?php echo esc_url( add_query_arg('address', $name, get_permalink(woocommerce_get_page_id( 'edit_address' ) ) ) ); ?>" class="edit"><?php _e( 'Edit', 'woocommerce' ); ?></a>
        </header>
        <address>
            <?php
                $address = apply_filters( 'woocommerce_my_account_my_address_formatted_address', array(
                    'first_name'    => get_user_meta( $customer_id, $name . '_first_name', true ),
                    'last_name'     => get_user_meta( $customer_id, $name . '_last_name', true ),
                    'company'       => get_user_meta( $customer_id, $name . '_company', true ),
                    'address_1'     => get_user_meta( $customer_id, $name . '_address_1', true ),
                    'address_2'     => get_user_meta( $customer_id, $name . '_address_2', true ),
                    'city'          => get_user_meta( $customer_id, $name . '_city', true ),
                    'state'         => get_user_meta( $customer_id, $name . '_state', true ),
                    'postcode'      => get_user_meta( $customer_id, $name . '_postcode', true ),
                    'country'       => get_user_meta( $customer_id, $name . '_country', true )
                ), $customer_id, $name );

                $formatted_address = $woocommerce->countries->get_formatted_address( $address );

                if ( ! $formatted_address )
                    _e( 'You have not set up this type of address yet.', 'woocommerce' );
                else
                    echo $formatted_address;
            ?>
        </address>
    </div>

<?php endforeach; ?>

<?php if ( get_option('woocommerce_ship_to_billing_address_only') == 'no' ) echo '</div>'; ?>
4

0 回答 0