如何在WooCommerce Checkout模板中重新排序帐单字段?

时间:2013-01-05 作者:m-torin

我正在使用WooTheme创建一个madlib风格的结账表单Customizing checkout fields using actions and filters

签出模板中的帐单字段form-billing.php与此通话一起显示:

<?php foreach ($checkout->checkout_fields[\'billing\'] as $key => $field) : ?>
<?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>
如何更改字段的显示顺序?

当前(默认)字段顺序为:
名字
姓氏
公司(为我隐藏)
城镇
邮政编码
国家

电子邮件
电话

默认顺序:
screenshot

我希望这些字段对美国人(我居住的地方)来说更为自然,因此:
名字
姓氏
公司(为我隐藏)
城镇

邮编
国家
电子邮件
电话

我怎样才能最好地做到这一点?

3 个回复
最合适的回答,由SO网友:m-torin 整理而成

感谢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; ?>

SO网友:Roy Milder

同样可以通过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;

}

SO网友:brasofilo

您可以复制到主题中,并编辑呈现签出表单的模板。

改编自plugin documentation:

Example
要覆盖管理订单通知,请复制:woocommerce/templates/checkout/form-checkout.php

yourtheme/woocommerce/checkout/form-checkout.php

[update]

在此文件中,就在打印字段之前,有一个操作挂钩:do_action(\'woocommerce_before_checkout_billing_form\', $checkout);.

所以,这只是在主题中添加此动作的问题functions.php 或者在自定义插件中,按照OP在回答中显示的顺序重新排列字段。无需重写模板,如果需要进一步自定义,则为“是”。

结束

相关推荐

Travel Blog Plugins

今年晚些时候,我将使用Wordpress创建一个关于我旅行的博客。我希望该博客具有以下功能我的帖子将被地理定位一张包含帖子位置的地图,可以单击地图上的各个点到达帖子</我正在寻找最好/最合适的插件。谢谢,艾尔。