web-dev-qa-db-ja.com

WooCommerce Checkoutテンプレートの請求フィールドを並べ替える方法

WooThemeのアクションとフィルタを使ったチェックアウトフィールドのカスタマイズを使ってmadlibスタイルのチェックアウトフォームを作成しています。

チェックアウトテンプレートform-billing.phpの請求フィールドがこの呼び出しで表示されます。

<?php foreach ($checkout->checkout_fields['billing'] as $key => $field) : ?>
<?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>

フィールドの表示順序を変更する方法

現在の(デフォルト)フィールドの順序は次のとおりです。
ファーストネーム
苗字
company(私のために隠されています)
町/市
郵便番号

状態
Eメール
電話

デフォルトの順序:
screenshot

私は、アメリカ人(私が住んでいる場所)にとってフィールドがより自然な順序になるようにしたいのです。
ファーストネーム
苗字
company(私のために隠されています)
町/市
状態
郵便番号

Eメール
電話

どうすればこれをベストにできますか?

15
torinagrippa

答えをくれたDbranesに感謝します。

交換します。

<?php foreach ($checkout->checkout_fields['billing'] as $key => $field) : ?>
<?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>

と:

<?php 
// order the keys for your custom ordering or delete the ones you don't need
$mybillingfields=array(
    "billing_first_name",
    "billing_last_name",
    "billing_company",
    "billing_address_1",
    "billing_address_2",
    "billing_city",
    "billing_state",
    "billing_postcode",
    "billing_country",
    "billing_email",
    "billing_phone",
);
foreach ($mybillingfields as $key) : ?>
<?php woocommerce_form_field( $key, $checkout->checkout_fields['billing'][$key], $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>
5
torinagrippa

あなたの(子)テーマのfunctions.phpでも同じことができます。

add_filter("woocommerce_checkout_fields", "order_fields");

function order_fields($fields) {

    $order = array(
        "billing_first_name", 
        "billing_last_name", 
        "billing_company", 
        "billing_address_1", 
        "billing_address_2", 
        "billing_postcode", 
        "billing_country", 
        "billing_email", 
        "billing_phone"

    );
    foreach($order as $field)
    {
        $ordered_fields[$field] = $fields["billing"][$field];
    }

    $fields["billing"] = $ordered_fields;
    return $fields;

}
29
Roy Milder

あなたのテーマにコピーして、チェックアウトフォームをレンダリングするテンプレートを編集することができます。

プラグインのドキュメントからの変更


管理注文通知を無効にするには、woocommerce/templates/checkout/form-checkout.phpをコピーしてください。

yourtheme/woocommerce/checkout/form-checkout.php

[更新]

このファイルでは、フィールドが表示される直前に、このアクションフックがあります:do_action('woocommerce_before_checkout_billing_form', $checkout);

そのため、このアクションをテーマのfunctions.phpまたはカスタムプラグインに追加して、OPが彼の回答に示すようにフィールドを並べ替えるだけで済みます。テンプレートを上書きする必要はありません。さらにカスタマイズが必要な場合は、はいです。

2
brasofilo