サポート » 使い方全般 » プロフィール更新時に「ブログ上の表示名」を自動設定する方法

  • 解決済 dadadada

    (@uedajirou2015)


    ユーザー登録時とプロフィール更新時に
    「ニックネーム」を「ブログ上の表示名」に
    自動設定したいと考えております。

    ユーザー登録時に「ブログ上の表示名」を自動設定するのは
    以下を追加することでできました。

    function user_register_set_display_name( $user_id ) {
      if ( !empty( $_POST['nickname'] ) ) {
        $nickname = $_POST['nickname'];
        $args = array(
          'ID' => $user_id,
          'display_name' => $nickname
        );
        wp_update_user( $args );
      }
    }
    add_action('user_register', 'user_register_set_display_name');

    プロフィール更新時も同じように以下を追加してみたのですが、
    プロフィールを更新すると読み込みに時間がかかり
    画面が真っ白になってしまうようになりました。

    function user_update_set_display_name( $user_id ) {
      if ( !empty( $_POST['nickname'] ) ) {
        $nickname = $_POST['nickname'];
        $args = array(
          'ID' => $user_id,
          'display_name' => $nickname
        );
        wp_update_user( $args );
      }
    }
    add_action( 'profile_update', 'user_update_set_display_name', 10, 2 );

    管理画面にアクセスし直すと、「ブログ上の表示名」は
    変更したニックネームに設定されているのですが、
    プロフィール更新時に毎回画面が真っ白になってしまうのを解消したいです。

    そこで、以下に変更してみましたが、
    今度は「ブログ上の表示名」の設定が自動設定されませんでした。

    function user_update_set_display_name( $user_id ) {
      if ( !empty( $_POST['nickname'] ) ) {
        $nickname = $_POST['nickname'];
        update_user_meta( $user_id, 'display_name', $nickname );
      }
    }
    add_action( 'profile_update', 'user_update_set_display_name', 10, 2 );

    プロフィール更新時に「ニックネーム」を「ブログ上の表示名」に
    自動設定する方法をご教示いただけると幸いです。

    よろしくお願い申し上げます。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • こんにちは

    wp_update_user() によって profile_update がフックされるので無限ループを引き起こします。
    無限ループを回避するために、wp_update_user() の呼び出し前にフックを解除するといいかと思います。

    remove_action( 'profile_update', 'user_update_set_display_name' ); // <-追加
    wp_update_user(・・・);
    add_action( 'profile_update', 'user_update_set_display_name' ); // <-追加
    • この返信は3年、 1ヶ月前にishitakaが編集しました。
    • この返信は3年、 1ヶ月前にishitakaが編集しました。
    スレッド開始 dadadada

    (@uedajirou2015)

    ishitaka様
    ご回答ありがとうございます。

    ご教示いただいた方法でうまくいきました!
    感謝いたします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「プロフィール更新時に「ブログ上の表示名」を自動設定する方法」には新たに返信することはできません。