【WordPress】ログインしている自分自身のwp_usermetaを更新するフォームを自作する
※自分のためのメモになります。
ページにログインしている自分自身がプロフィールなどを更新するためのフォームをページに設けるための方法です。
このやり方をカスタマイズすれば、いろんなテーブルの情報を更新することができるようになります。
ただし、WordPressの関数などを利用してますのでWordPressのみの使用方法となります。また、セキュリティに関しては各自で追加設定を行ってください。
入力フォーム
<?php
// 自分自身のユーザーIDを取得
$author = wp_get_current_user();
$user = $author->ID;
// 簡易的セキュリティ対策の関数を作っておく
function h($s) {
return htmlspecialchars($s, ENT_QUOTES, "UTF-8");
}
// 姓の更新(last_name)
$last_name = $wpdb->update(
'wp_usermeta',
array(
'meta_value' => h($_POST["last_name"])
),
array( 'user_id' => $user,'meta_key' => 'last_name', ),
array(
'%s', // name
)
);
if(!$last_name){
echo "「姓」は更新できませんでした。<br>";
}else{
echo "「姓」は更新しました";
}
// 名の更新(first_name)
$first_name = $wpdb->update(
'wp_usermeta',
array(
'meta_value' => h($_POST["first_name"])
),
array( 'user_id' => $user,'meta_key' => 'first_name', ),
array(
'%s', // name
)
);
if(!$first_name){
echo "「名」は更新できませんでした。<br>";
}else{
echo "「名」は更新しました<br>";
}
// 電話番号の更新(tel)
$last_name = $wpdb->update(
'wp_usermeta',
array(
'meta_value' => h($_POST["tel"])
),
array( 'user_id' => $user,'meta_key' => 'tel', ),
array(
// '%d' // tel
)
);
if(!$last_name){
echo "「tel」は更新できませんでした。<br>";
}else{
echo "「tel」は更新しました<br>";
}
?>
<form action="<?=home_url()?>/xxxx" method="post">
<label for="last_name">姓</label>
<input type="text" name="last_name" id="last_name"><br>
<label for="first_name">名</label>
<input type="text" name="first_name" id="first_name"><br>
<label for="tel">電話番号</label>
<input type="tel" name="tel" id="tel"><br>
<input type="submit" value="次のページ">
</form>
この記事が気に入ったらサポートをしてみませんか?