Welcartユーザー管理システムとWordPressのユーザー管理システムはそれぞれ独立したものになっているためメルマガ用プラグインなどWordPressサイト内の会員向けに利用できるプラグインを使いたい場合、Welcartユーザーに対して利用することは出来ません。
今回は、Welcartユーザーに対してもWordPressプラグインが利用出来るようWelcartへユーザーがログインするタイミングでWordPressユーザーとしてユーザー登録や更新をする方法を書いていきます。
Welcart ログイン時にWordPressユーザーを登録・更新する
Welcartで用意されているアクションフック “usces_action_after_login” にWordPressユーザー登録・更新するための独自関数を追加します。
/**
* Welcart ログイン時にWordPressユーザーを登録・更新する
*/
function ag_update_wp_user()
{
global $usces;
/* ▼Welcartユーザー情報取得な登録情報準備 */
$user_login = 'AGUID'.usces_memberinfo('ID', 'return'); //Welcart member_id : ID
$user_pass = md5(uniqid(rand(), 1)); //ユニークIDのハッシュ値
$user_email = usces_memberinfo('mailaddress1', 'return'); //メールアドレス
$last_name = usces_memberinfo('name1', 'return'); //姓
$first_name = usces_memberinfo('name2', 'return'); //名
$display_name = $last_name.' '.$first_name; //
$role = 'analyzegear_member'; //権限グループ : subscriber
$show_admin_bar_front = 'false'; //管理バー表示
/* ▼ユーザーが存在するか確認する */
$user_id = username_exists( $user_login );
/* ▼ユーザー登録・更新 */
if ( $user_id ) {
//既存ユーザー情報を更新する
$args = array(
'ID' => $user_id,
'user_login' => $user_login,
'user_email' => $user_email,
'first_name' => $first_name,
'last_name' => $last_name,
'display_name' => $display_name,
);
$user_id = wp_update_user($args);
} else {
//新規ユーザー情報を登録する
$args = array(
'user_login' => $user_login,
'user_pass' => $user_pass,
'user_email' => $user_email,
'user_nicename' => $user_login,
'first_name' => $first_name,
'last_name' => $last_name,
'role' => $role,
'show_admin_bar_front' => $show_admin_bar_front
);
$user_id = wp_insert_user($args);
}
/* ▼ログイン状態にする(自動ログイン) */
wp_clear_auth_cookie($user_id);
wp_set_auth_cookie($user_id);
wp_set_current_user($user_id);
}
add_action( 'usces_action_after_login', 'ag_update_wp_user' );
動作環境情報
エックスサーバー(x10) PHP 7.3.14 MySQL 5.7 WordPress 5.4 Welcart e-Commerce 1.9.29
コメント