wordpress woocommerce - 在结帐页面

时间:2015-07-23 07:54:20

标签: php wordpress woocommerce

据我所知,您可以在WooCommerce的结帐页面上添加自定义字段,但我想在结算明细之前显示的是帐户字段,这些字段已经存在于documentation中。这些字段命名为:

  • account_username
  • account_password
  • account_password-2

但默认情况下不会显示它们。我只是通过将它们放在功能列表的顶部来设置显示它们,以便在我的主题function.php中重新排序这样的结算字段

add_filter("woocommerce_checkout_fields", "order_fields");

function order_fields($fields) {

    $order = array(
        "account_username",
        "account_password",
        "account_password-2",
        "billing_first_name",
        "billing_last_name",
        // other billing fields go here
    );

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

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

}

这可以在签出时创建帐户的功能很好,但我在修改其标签和占位符时遇到了麻烦。这就是我试图做的事情:

add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );

function custom_override_checkout_fields( $fields ) {

    $fields['account']['account_username']['label'] = '* Username: ';
    $fields['account']['account_username']['placeholder'] = 'Enter username here...';

}

但它不会让我更改字段的标签和占位符,所以我在想它可能与我如何显示它和/或我如何修改它们有关。

想法,有人吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

我找到了答案,所以如果有人遇到同样的问题,这是最好的解决方案。在我的情况下,不是尝试使帐户字段可见,而是手动输出我需要的字段更有效,因为我不需要大多数默认字段。

我所做的是覆盖form-billing.php模板。我删除了这部分字段的循环:

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

    <?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>

<?php endforeach; ?>

并将其替换为单独添加到页面:

<?php
    woocommerce_form_field( 'billing_first_name', $checkout->checkout_fields['billing']['billing_first_name'], $checkout->get_value( 'billing_first_name') );
    woocommerce_form_field( 'billing_email', $checkout->checkout_fields['billing']['billing_email'], $checkout->get_value( 'billing_email') );
    woocommerce_form_field( 'account_username', $checkout->checkout_fields['account']['account_username'], $checkout->get_value( 'account_username') );
    woocommerce_form_field( 'account_password', $checkout->checkout_fields['account']['account_password'], $checkout->get_value( 'account_password') );
    woocommerce_form_field( 'account_password-2', $checkout->checkout_fields['account']['account_password-2'], $checkout->get_value( 'account_password-2') );
    //...other fields that I need
?>

从那里,标签,占位符等的修改工作得很好。希望它也适用于同样问题的其他人。干杯! :)