12

Woocommerce の「注文の表示」(order-details.php) ページを「マイ アカウント」(ユーザーがログインしている場合) 内でカスタマイズしており、請求先住所と配送先住所を出力するための以下のコードがあります。

<?php if (!$order->get_formatted_billing_address()) _e( 'N/A', 'woocommerce' ); else echo $order->get_formatted_billing_address(); ?>

その出力の各項目をカスタマイズする方法があるかどうか知りたいです。例: マイ アカウントのホームページでは、顧客の請求先住所と配送先住所が次のように表示されます。

<?php
    $address = apply_filters( 'woocommerce_my_account_my_address_formatted_address', array(
        'first_name'    => ucwords(get_user_meta( $customer_id, $name . '_first_name', true )),
        'last_name'     => ucwords(get_user_meta( $customer_id, $name . '_last_name', true )),
        'company'       => ucwords(get_user_meta( $customer_id, $name . '_company', true )),
        'address_1'     => ucwords(get_user_meta( $customer_id, $name . '_address_1', true )),
        'address_2'     => ucwords(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;
?>

オーダービューページで使いたい、そんな感じです。このコードに「apply_filters」を入れるにはどうすればよいですか?

4

3 に答える 3

2

class-wc-countries.php テンプレートでは、デフォルトのアドレスと特定の国のアドレスが指定されています。functions.php に配置された以下のスニペットの例は、デフォルトのアドレス形式を変更します。

function custom_address_formats( $formats ) {
    $formats[ 'default' ]  = "{name}\n{company}\n{address_1} {address_2}\n{postcode} {city}";   
    return $formats;
}
add_filter('woocommerce_localisation_address_formats', 'custom_address_formats');

上記のテンプレートを調べて、含めたい住所コンポーネントと、それらがどのような順序で表示されているかを確認してください。

于 2016-05-16T14:01:50.603 に答える