请不要删除说这是woocommerce的问题。
下面的代码中有$fields = wp_parse_args( $fields, apply_filters( \'woocommerce_credit_card_form_fields\', $default_fields, $this->id ) );
所以我相信我可以修改$default_fields
通过add_filter
/**
* Output field name HTML
*
* Gateways which support tokenization do not require names - we don\'t want the data to post to the server.
*
* @since 2.6.0
* @param string $name Field name.
* @return string
*/
public function field_name( $name ) {
return $this->supports( \'tokenization\' ) ? \'\' : \' name="\' . esc_attr( $this->id . \'-\' . $name ) . \'" \';
}
/**
* Outputs fields for entering credit card information.
*
* @since 2.6.0
*/
public function form() {
wp_enqueue_script( \'wc-credit-card-form\' );
$fields = array();
$cvc_field = \'<p class="form-row form-row-last">
<label for="\' . esc_attr( $this->id ) . \'-card-cvc">\' . esc_html__( \'Card code\', \'woocommerce\' ) . \' <span class="required">*</span></label>
<input id="\' . esc_attr( $this->id ) . \'-card-cvc" class="input-text wc-credit-card-form-card-cvc" inputmode="numeric" autocomplete="off" autocorrect="no" autocapitalize="no" spellcheck="no" type="tel" maxlength="4" placeholder="\' . esc_attr__( \'CVC\', \'woocommerce\' ) . \'" \' . $this->field_name( \'card-cvc\' ) . \' style="width:100px" />
</p>\';
$default_fields = array(
\'card-number-field\' => \'<p class="form-row form-row-wide">
<label for="\' . esc_attr( $this->id ) . \'-card-number">\' . esc_html__( \'Card number\', \'woocommerce\' ) . \' <span class="required">*</span></label>
<input id="\' . esc_attr( $this->id ) . \'-card-number" class="input-text wc-credit-card-form-card-number" inputmode="numeric" autocomplete="cc-number" autocorrect="no" autocapitalize="no" spellcheck="no" type="tel" placeholder="•••• •••• •••• ••••" \' . $this->field_name( \'card-number\' ) . \' />
</p>\',
\'card-expiry-field\' => \'<p class="form-row form-row-first">
<label for="\' . esc_attr( $this->id ) . \'-card-expiry">\' . esc_html__( \'Expiry (MM/YY)\', \'woocommerce\' ) . \' <span class="required">*</span></label>
<input id="\' . esc_attr( $this->id ) . \'-card-expiry" class="input-text wc-credit-card-form-card-expiry" inputmode="numeric" autocomplete="cc-exp" autocorrect="no" autocapitalize="no" spellcheck="no" type="tel" placeholder="\' . esc_attr__( \'MM / YY\', \'woocommerce\' ) . \'" \' . $this->field_name( \'card-expiry\' ) . \' />
</p>\',
);
if ( ! $this->supports( \'credit_card_form_cvc_on_saved_method\' ) ) {
$default_fields[\'card-cvc-field\'] = $cvc_field;
}
$fields = wp_parse_args( $fields, apply_filters( \'woocommerce_credit_card_form_fields\', $default_fields, $this->id ) );
?>
<fieldset id="wc-<?php echo esc_attr( $this->id ); ?>-cc-form" class=\'wc-credit-card-form wc-payment-form\'>
<?php do_action( \'woocommerce_credit_card_form_start\', $this->id ); ?>
<?php
foreach ( $fields as $field ) {
echo $field; // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
}
?>
<?php do_action( \'woocommerce_credit_card_form_end\', $this->id ); ?>
<div class="clear"></div>
</fieldset>
<?php
if ( $this->supports( \'credit_card_form_cvc_on_saved_method\' ) ) {
echo \'<fieldset>\' . $cvc_field . \'</fieldset>\'; // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
}
}
}
但我做不到。这是我在扩展类中尝试的
add_filter( \'woocommerce_credit_card_form_fields\', \'ggowl_auth_creditform\', $priority = 10, $accepted_args = 1 );
public function ggowlwoo_field_name( $name ) {
return \' name="\' . esc_attr( $this->id . \'-\' . $name ) . \'" \';
}
public function ggowl_auth_creditform($id){
$id = $this->id;
$default_fields = array(
\'card-number-field\' => \'<p class="form-row form-row-wide">
<label for="\' . esc_attr( $this->id ) . \'-card-number">\' . esc_html__( \'Card number\', \'woocommerce\' ) . \' <span class="required">*</span></label>
<input id="\' . esc_attr( $this->id ) . \'-card-number" class="input-text wc-credit-card-form-card-number" inputmode="numeric" autocomplete="cc-number" autocorrect="no" autocapitalize="no" spellcheck="no" type="tel" placeholder="•••• •••• •••• ••••" \' . $this->ggowlwoo_field_name( \'card-number\' ) . \' />
</p>\',
\'card-expiry-field\' => \'<p class="form-row form-row-first">
<label for="\' . esc_attr( $this->id ) . \'-card-expiry">\' . esc_html__( \'Expiry (MM/YY)\', \'woocommerce\' ) . \' <span class="required">*</span></label>
<input id="\' . esc_attr( $this->id ) . \'-card-expiry" class="input-text wc-credit-card-form-card-expiry" inputmode="numeric" autocomplete="cc-exp" autocorrect="no" autocapitalize="no" spellcheck="no" type="tel" placeholder="\' . esc_attr__( \'MM / YY\', \'woocommerce\' ) . \'" \' . $this->ggowlwoo_field_name( \'card-expiry\' ) . \' />
</p>\',
\'<p class="form-row form-row-last">
<label for="\' . esc_attr( $this->id ) . \'-card-cvc">\' . esc_html__( \'Card code\', \'woocommerce\' ) . \' <span class="required">*</span></label>
<input id="\' . esc_attr( $this->id ) . \'-card-cvc" class="input-text wc-credit-card-form-card-cvc" inputmode="numeric" autocomplete="off" autocorrect="no" autocapitalize="no" spellcheck="no" type="tel" maxlength="4" placeholder="\' . esc_attr__( \'CVC\', \'woocommerce\' ) . \'" \' . $this->ggowlwoo_field_name( \'card-cvc\' ) . \' style="width:100px" />
</p>\',
);
return $default_fields;
}