【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>





この記事が気に入ったらサポートをしてみませんか?