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メール
電話
デフォルトの順序:
私は、アメリカ人(私が住んでいる場所)にとってフィールドがより自然な順序になるようにしたいのです。
ファーストネーム
苗字
company(私のために隠されています)
町/市
状態
郵便番号
国
Eメール
電話
どうすればこれをベストにできますか?
答えをくれた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; ?>
あなたの(子)テーマの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;
}
あなたのテーマにコピーして、チェックアウトフォームをレンダリングするテンプレートを編集することができます。
例
管理注文通知を無効にするには、woocommerce/templates/checkout/form-checkout.php
をコピーしてください。
にyourtheme/woocommerce/checkout/form-checkout.php
[更新]
このファイルでは、フィールドが表示される直前に、このアクションフックがあります:do_action('woocommerce_before_checkout_billing_form', $checkout);
。
そのため、このアクションをテーマのfunctions.php
またはカスタムプラグインに追加して、OPが彼の回答に示すようにフィールドを並べ替えるだけで済みます。テンプレートを上書きする必要はありません。さらにカスタマイズが必要な場合は、はいです。