[WordPress]ユーザー登録時にカスタムフィールドの値を自動で挿入する方法

こんばんは、ゾノ( @ozonosho )です。
さて、今日のブログではWordPressでユーザー登録時にカスタムフィールドの値を自動で挿入する方法を紹介したいと思います。
それによってどんなことができるかというと、ユーザー登録時に自動でそのユーザー専用のアフィリエイトリンクを発行したり、初期機能では姓・名で分かれてしまっているユーザー名称をフルネームであわせて保存したりすることができます。
今回の実装にはWordpressの「フック」を利用するのですが、これがマジで便利で・・・もっと早く知っておけば良かったなと後悔していますw
ユーザー登録時にカスタムフィールドの値を自動で挿入する方法
実装は簡単で、下記の関数をfunctions.phpに追加してください。
function user_cf_set($user_id) {
	$val = '挿入したい値';
	update_user_meta($user_id, 'カスタムフィールド名', $val);
}
add_action( 'user_register', 'user_cf_set', 10, 1 );
これでユーザー作成ページから新規ユーザーを作成したときに、同時にカスタムフィールドにも値が挿入されます。
ポイントは「user_register」フックを利用すること
user_registerフックは新規ユーザー作成後のタイミングで処理を走らせてくれるため、ここで作成されたユーザーのカスタムフィールドを更新することでユーザー作成と同じタイミングでカスタムフィールドの値も挿入することができます。
フックを利用すればWordpressのコアファイルをいじる必要がないので、頻繁にあるWordpressの更新にも限りなく影響を受けづらいです。
(逆にフックを利用しなければWordpressの更新の度にソースが書き換わる可能性があります)
ここからは実際の使用例を見てみましょう。
使用例①自動でアフィリエイト用のコードを発行する
ユーザー用のカスタムフィールド「user_ref」を用意して、ユーザー登録時に自動でアフィリエイト用のコードを挿入するためのコードを書いてみました。
function user_cf_set($user_id) {
	function get_rand_str() {
		$str = 'abcdefghijklmnopqrstuvwxyz';
		$str_r = substr(str_shuffle($str), 0, 5);
		return $str_r;
	}
	$refcode = $user_id . get_rand_str() . mt_rand(0, 1000);
	update_user_meta($user_id, 'user_ref', $refcode);
}
add_action( 'user_register', 'user_cf_set', 10, 1 );
アフィリエイト用のコードはユーザーごとに重複しないようにする必要があるため、「ユーザーID(ユーザー固有の数字)+ランダムな英数字5桁+ランダムな数字3桁程度」をアフィリエイト用のコードとしてカスタムフィールド「user_ref」に挿入するようにしました。
使用例②ユーザー名称のフルネームを登録する
ユーザー用のカスタムフィールド「user_fullname」を用意して、ユーザー登録時に自動で姓名をあわせた内容を挿入するためのコードを書いてみました。
function user_cf_set($user_id) {
	$user = get_userdata($user_id);
	$fullname = $user->user_lastname . $user->user_firstname;
	update_user_meta($user_id, 'user_fullname', $fullname);
}
add_action( 'user_register', 'user_cf_set', 10, 1 );
get_userdataでユーザー情報を取得して、姓名をあわせた内容をカスタムフィールド「user_fullname」に挿入するようにしました。
おわりに
以上、今回の記事ではWordPressでユーザー登録時にカスタムフィールドの値を自動で挿入する方法を紹介させていただきました。
WordPressのフックを利用すれば、このように任意のタイミングで(コアファイルを書き換えずに)処理を加えることができます。
使用できるフックの一覧は「フィルターフック一覧」「アクションフック一覧」にそれぞれ記載されているので、ぜひ活用してみてください。
当サイトではWordPressのカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。


			



					
					
					
					
					
					
					
					
					
					
					
					
					
					
					
					
					
					
					
					
					
					
					
					
					
					
					


