當前位置:首頁>WordPress建站>WordPress開發(fā)>添加自定義字段到 Ultimate Member 的賬號設置頁面

添加自定義字段到 Ultimate Member 的賬號設置頁面

最近一個項目中,用到了 Ultimate Member 插件,而這個插件前端賬號修改頁面,不支持直接設置字段,只能通過鉤子來實現(xiàn)。

在本示例中,我們需要添加一個昵稱nickname)字段,同時,我們也要修改用戶的“公開顯示為”(display_name)字段為昵稱。因為WordPress默認會調(diào)用這個 display_name 作為用戶在網(wǎng)站上顯示的名稱,如果不更新這個字段,用戶顯示的名稱會默認為用戶名,而不是昵稱。

最終實現(xiàn)的效果如下圖所示:

由于是直接在前端更新了字段的值,所以在后臺的用戶資料中,“昵稱”和“公開顯示為”兩個字段都會同步更新:

所用到的完整代碼如下:

/**
 * Add custom fields to UM Account general
 *
 * @param int $user_id
 * @param array $changes
 */
function wpkj_um_after_account_general() {
	$custom_fields = [
		'nickname' => __('昵稱'),
	];

	foreach ($custom_fields as $key => $value) {

		$fields[ $key ] = array(
				'title' => $value,
				'metakey' => $key,
				'type' => 'text',
				'label' => $value,
		);

		apply_filters('um_account_secure_fields', $fields, 'general' );

		$field_value = get_user_meta(um_user('ID'), $key, true) ? : '';

		$html = '<div class="um-field um-field-'.$key.'" data-key="'.$key.'">
		<div class="um-field-label">
		<label for="'.$key.'">'.$value.'</label>
		<div class="um-clear"></div>
		</div>
		<div class="um-field-area">
		<input class="um-form-field valid "
		type="text" name="'.$key.'"
		id="'.$key.'" value="'.$field_value.'"
		placeholder=""
		data-validate="" data-key="'.$key.'">
		</div>
		</div>';

		echo $html;

	}
}
add_action('um_after_account_general', 'wpkj_um_after_account_general', 100);


/**
 * Save custom fields
 *
 * @param int $user_id
 * @param array $changes
 */
function wpkj_um_after_user_account_updated( $user_id, $changes ) {

	if( isset( $_POST[ 'nickname' ] ) && !UM()->form()->has_error( 'nickname' ) ) {

		$nickName = sanitize_text_field($_POST[ 'nickname' ]);

		// 更新“昵稱”字段
		update_user_meta( $user_id, 'nickname', $nickName );

		// 更新“公開顯示為”字段
		wp_update_user( array( 'ID' => $user_id, 'display_name' => $nickName ) );

	}
}
add_action( 'um_after_user_account_updated', 'wpkj_um_after_user_account_updated', 20, 2 );

特別要注意的一點:display_name 字段保存在 wp_users 這個表,不在 wp_usermeta 數(shù)據(jù)表,所以我們不能使用 update_user_meta() 來更新,而是使用 wp_update_user() 來更新。

參考資料:

聲明:本站所有文章,如無特殊說明或標注,均為本站原創(chuàng)發(fā)布。任何個人或組織,在未征得本站同意時,禁止復制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺。如若本站內(nèi)容侵犯了原著者的合法權益,可聯(lián)系我們進行處理。

給TA打賞
共{{data.count}}人
人已打賞
歡迎關注WordPress大學公眾號 WPDAXUE
WordPress開發(fā)

WordPress添加自定義CSS類名到body標簽

2020-5-24 10:09:31

WordPress開發(fā)商城相關

WooCommerce 檢查用戶是否有未完成支付的訂單

2020-5-31 10:49:50

0 條回復 A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

苍梧县| 应用必备| 登封市| 威宁| 宜州市| 广平县| 徐水县| 尼玛县| 恭城| 清水河县| 雷波县| 敖汉旗| 永丰县| 大丰市| 商城县| 乐至县| 贵州省| 泗水县| 新邵县| 陇西县| 焦作市| 庆云县| 团风县| 湘潭市| 郑州市| 晋中市| 嘉定区| 鄂托克旗| 桐城市| 海伦市| 漳平市| 明光市| 怀仁县| 和田县| 佛坪县| 北辰区| 灵武市| 扶风县| 会理县| 黑龙江省| 延吉市|