Ich habe Felder benutzerdefinierte Kasse favorite_color
, dass Benutzer in während der Prüfung (nicht erforderlich), imilar zu anderen Standard Kasse Felder ausfüllen ...ein benutzerdefiniertes Feld in WooCommerce Konto bearbeiten Seite hinzufügen
Ihr Konto Abschnitt in "Konto bearbeiten", möchte ich das benutzerdefinierte Feld favorite_color
hinzufügen, damit der Kunde diesen Feldwert bearbeiten kann.
Dafür habe ich die Vorlage bearbeitet haben myaccount/form-edit-account.php
durch das Kopieren und Bearbeiten einer ursprünglichen Codezeile in es:
<p class="woocommerce-form-row woocommerce-form-row--first form-row form-row-first">
<label for="account_first_name"><?php _e('First name', 'woocommerce'); ?> <span class="required">*</span></label>
<input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="account_first_name" id="account_first_name" value="<?php echo esc_attr($user->first_name); ?>" />
</p>
Ich ersetzte den account_first_name mit meinem favorite_color und das Feld selbst zeigt den gespeicherten Wert im Feld (Danke an $user->favorite_color
)
Aber der schlechte Teil ist, es wird nicht gespeichert.
Welchen Code muss ich hinzufügen, damit dies funktioniert und gespeichert wird?
Die ursprüngliche Template-Code ist:
<?php
/**
* Edit account form
*
* This template can be overridden by copying it to yourtheme/woocommerce/myaccount/form-edit-account.php.
*
* HOWEVER, on occasion WooCommerce will need to update template files and you
* (the theme developer) will need to copy the new files to your theme to
* maintain compatibility. We try to do this as little as possible, but it does
* happen. When this occurs the version of the template file will be bumped and
* the readme will list any important changes.
*
* @see https://docs.woocommerce.com/document/template-structure/
* @author WooThemes
* @package WooCommerce/Templates
* @version 2.6.0
*/
if (! defined('ABSPATH')) {
exit;
}
do_action('woocommerce_before_edit_account_form'); ?>
<form class="woocommerce-EditAccountForm edit-account" action="" method="post">
<?php do_action('woocommerce_edit_account_form_start'); ?>
<p class="woocommerce-form-row woocommerce-form-row--first form-row form-row-first">
<label for="account_first_name"><?php _e('First name', 'woocommerce'); ?> <span class="required">*</span></label>
<input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="account_first_name" id="account_first_name" value="<?php echo esc_attr($user->first_name); ?>" />
</p>
<p class="woocommerce-form-row woocommerce-form-row--last form-row form-row-last">
<label for="account_last_name"><?php _e('Last name', 'woocommerce'); ?> <span class="required">*</span></label>
<input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="account_last_name" id="account_last_name" value="<?php echo esc_attr($user->last_name); ?>" />
</p>
<div class="clear"></div>
<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
<label for="account_email"><?php _e('Email address', 'woocommerce'); ?> <span class="required">*</span></label>
<input type="email" class="woocommerce-Input woocommerce-Input--email input-text" name="account_email" id="account_email" value="<?php echo esc_attr($user->user_email); ?>" />
</p>
<fieldset>
<legend><?php _e('Password change', 'woocommerce'); ?></legend>
<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
<label for="password_current"><?php _e('Current password (leave blank to leave unchanged)', 'woocommerce'); ?></label>
<input type="password" class="woocommerce-Input woocommerce-Input--password input-text" name="password_current" id="password_current" />
</p>
<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
<label for="password_1"><?php _e('New password (leave blank to leave unchanged)', 'woocommerce'); ?></label>
<input type="password" class="woocommerce-Input woocommerce-Input--password input-text" name="password_1" id="password_1" />
</p>
<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
<label for="password_2"><?php _e('Confirm new password', 'woocommerce'); ?></label>
<input type="password" class="woocommerce-Input woocommerce-Input--password input-text" name="password_2" id="password_2" />
</p>
</fieldset>
<div class="clear"></div>
<?php do_action('woocommerce_edit_account_form'); ?>
<p>
<?php wp_nonce_field('save_account_details'); ?>
<input type="submit" class="woocommerce-Button button" name="save_account_details" value="<?php esc_attr_e('Save changes', 'woocommerce'); ?>" />
<input type="hidden" name="action" value="save_account_details" />
</p>
<?php do_action('woocommerce_edit_account_form_end'); ?>
</form>
<?php do_action('woocommerce_after_edit_account_form'); ?>
Idealerweise sollten Sie dies über einen der in dieser Vorlage aufgerufenen Aktions-Hooks einfügen, anstatt die Vorlage selbst zu ändern. – CBroe
Ich möchte nur den Benutzer das benutzerdefinierte Checkout-Feld ändern (in meinem Beispiel nannte ich es "favorite_color"). Welchen Code muss ich zur form-edit-account.php hinzufügen? – Josione