LOGO - 獨角獸工坊 - SEO 優化 | 網站設計 | 網站架設

獨角獸工坊 - SEO 搜尋引擎最佳化 | 網站設計 | 網站架設

網站設計/網站架設SEO 搜尋引擎最佳化/Wordpress 設定結合 SEO 最佳推薦,兼具美感與質感的代客架站服務,讓你的網站就是比別人更好!

  • 首頁
  • 案例作品
  • 實用技巧
  • 服務詢問

Homemy account

Posts tagged: my account

Woocommerce 會員中心 My Account 會員資料編輯加入電話號碼

Woocommerce 會員中心 My Account 會員資料編輯加入電話號碼

2021-12-27
by edwinlin WooCommerce

開發時遇到的一個很奇怪的需求,但想想這需求也很合情合理,在 Woocommerce 的會員後台中,其實有這個欄位編輯,是在收件地址資料那邊設定的,既然處理了就順便筆記分享下來

很可能以後都是標配(?)

首先要進到你的佈景主題中,找到 functions.php 記得備份一下,接著新增以下程式碼

 

//會員資料編輯新增手機


add_action( 'woocommerce_edit_account_form', 'add_billing_mobile_phone_to_edit_account_form' ); 
function add_billing_mobile_phone_to_edit_account_form() {
    $user = wp_get_current_user();
    ?>
     <p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
        <label for="billing_mobile_phone"><?php _e( '手機號碼驗證(再輸入一次)', 'woocommerce' ); ?> <span class="required">*</span></label>
        <input type="text" class="woocommerce-Input woocommerce-Input--phone input-text" name="billing_mobile_phone" id="billing_mobile_phone" value="<?php echo esc_attr( $user->billing_mobile_phone ); ?>" />
    </p>
    <?php
}

// 檢查驗證電話欄位
add_action( 'woocommerce_save_account_details_errors','billing_mobile_phone_field_validation', 20, 1 );
function billing_mobile_phone_field_validation( $args ){
    if ( isset($_POST['billing_mobile_phone']) && empty($_POST['billing_mobile_phone']) )
        $args->add( 'error', __( '手機號碼有所不同,請檢查下方確認再次填寫', 'woocommerce' ),'');
}

// 儲存電話號碼欄位進會員資料
add_action( 'woocommerce_save_account_details', 'my_account_saving_billing_mobile_phone', 20, 1 );
function my_account_saving_billing_mobile_phone( $user_id ) {
    if( isset($_POST['billing_mobile_phone']) && ! empty($_POST['billing_mobile_phone']) )
        update_user_meta( $user_id, 'billing_mobile_phone', sanitize_text_field($_POST['billing_mobile_phone']) );
}

上面完成之後,請進到 Woocommerce 外掛資料夾內,找到 templates/myaccount/form-edit-account.php 先COPY一個備份,再打開編輯

<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
<label for="billing_mobile_phone"><?php _e( '手機號碼', 'woocommerce' ); ?> <span class="required">*</span></label>
<input type="text" class="woocommerce-Input woocommerce-Input--phone input-text" name="billing_mobile_phone" id="billing_mobile_phone" value="<?php echo esc_attr( $user->billing_mobile_phone ); ?>" />
</p>

找到你要的位置,把這個欄位 HTML 安插進去

他插入位置自己去判斷,我是插入在 Email 後面,會像以下這樣:

<?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/
 * @package WooCommerceTemplates
 * @version 3.5.0
 */

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_tag' ); ?> >

	<?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 esc_html_e( 'First name', 'woocommerce' ); ?>&nbsp;<span class="required">*</span></label>
		<input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="account_first_name" id="account_first_name" autocomplete="given-name" value="<?php echo esc_attr( $user->first_name ); ?>" />
	</p>
	
	<div class="clear"></div>

	<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
		<label for="account_display_name"><?php esc_html_e( 'Display name', 'woocommerce' ); ?>&nbsp;<span class="required">*</span></label>
		<input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="account_display_name" id="account_display_name" value="<?php echo esc_attr( $user->display_name ); ?>" /> <span><em><?php esc_html_e( 'This will be how your name will be displayed in the account section and in reviews', 'woocommerce' ); ?></em></span>
	</p>
	<div class="clear"></div>

	<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
		<label for="account_email"><?php esc_html_e( 'Email address', 'woocommerce' ); ?>&nbsp;<span class="required">*</span></label>
		<input type="email" class="woocommerce-Input woocommerce-Input--email input-text" name="account_email" id="account_email" autocomplete="email" value="<?php echo esc_attr( $user->user_email ); ?>" />
	</p>
             <p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
    <label for="billing_mobile_phone"><?php _e( '手機號碼', 'woocommerce' ); ?> <span class="required">*</span></label>
    <input type="text" class="woocommerce-Input woocommerce-Input--phone input-text" name="billing_mobile_phone" id="billing_mobile_phone" value="<?php echo esc_attr( $user->billing_mobile_phone ); ?>" />
</p>

	<fieldset>
		<legend><?php esc_html_e( 'Password change', 'woocommerce' ); ?></legend>

		<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
			<label for="password_current"><?php esc_html_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" autocomplete="off" />
		</p>
		<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
			<label for="password_1"><?php esc_html_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" autocomplete="off" />
		</p>
		<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
			<label for="password_2"><?php esc_html_e( 'Confirm new password', 'woocommerce' ); ?></label>
			<input type="password" class="woocommerce-Input woocommerce-Input--password input-text" name="password_2" id="password_2" autocomplete="off" />
		</p>
	</fieldset>
	<div class="clear"></div>

	<?php do_action( 'woocommerce_edit_account_form' ); ?>

	<p>
		<?php wp_nonce_field( 'save_account_details', 'save-account-details-nonce' ); ?>
		<button type="submit" class="woocommerce-Button button" name="save_account_details" value="<?php esc_attr_e( 'Save changes', 'woocommerce' ); ?>"><?php esc_html_e( 'Save changes', 'woocommerce' ); ?></button>
		<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' ); ?>

儲存後就會看到了

Woocommerce 會員中心 My Account 會員資料編輯加入電話號碼
Read More

近期文章

  • 如何製作一鍵清空購物車 Empty Cart 的按鈕
  • WooCommerce 套用折價券 Coupon 免運費後隱藏原有運費顯示金額
  • 無庫存允許下單 Backorder 修改提示
  • WooCommerce 修改訂單備註資料日期格式
  • WooCommerce 清空購物車返回訊息+網址修改

彙整

  • 2022 年 7 月
  • 2022 年 6 月
  • 2022 年 5 月
  • 2022 年 4 月
  • 2022 年 3 月
  • 2022 年 2 月
  • 2022 年 1 月
  • 2021 年 12 月
  • 2021 年 7 月
  • 2020 年 2 月
  • 2019 年 7 月
  • 2019 年 6 月
  • 2019 年 5 月
  • 2019 年 4 月
  • 2018 年 12 月
  • 2018 年 9 月
  • 2018 年 6 月
  • 2017 年 3 月

分類

  • Elementor 教學
  • SEO
  • WooCommerce
  • 實用技巧
  • 版型修改
  • 課程記事

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文
LOGO - 獨角獸工坊 - SEO 優化 | 網站設計 | 網站架設

獨角獸工坊 - SEO 搜尋引擎最佳化 | 網站設計 | 網站架設

網站設計/網站架設SEO 搜尋引擎最佳化/Wordpress 設定結合 SEO 最佳推薦,兼具美感與質感的代客架站服務,讓你的網站就是比別人更好!

網站架設是在理性與感性的衝突間找到平衡
 
網站絕非一個工具,而是一個具有靈魂及生命的個體,透過他你將會讓你的事業升華至更高的層次。

站內選單

  • 首頁
  • 案例作品
  • 實用技巧
  • 服務詢問
© 2023 The Unicorn Workshop. All Rights Reserved.
Shopping Basket