13. 会員機能(WP-Membersのカスタマイズ)

WP-Members用のカスタマイズはfunctions.phpに追加します。
ユーザー名は、日本語かと思われる方もいるかもしれないので、ログインIDの表記に出来るだけ変更します。
また、サイドバーのログインウィジェットでのログイン後ユーザー名が表示されるため、表示名に変更をします。

  • ユーザー名(ログインID)を制限しているため、エラー時の文言を変更
  • サイドバーのログインウィジェットでログイン後に表示されるユーザー名を表示名に変更
  • サイドバーのログインウィジェットにリンクとアバター表示追加
    管理者の場合は、ダッシュボードへのリンクも追加します。
  • サイドバーの表示を変更
  • ログイン固定ページの表示を変更
  • 会員登録固定ページの表示を変更
  • 会員ページにアバター変更、退会用リンクを追加
  • 会員登録時の利用規約リンクを利用規約(TOS)固定ページに変更
  • 会員登録時、会員情報変更時にニックネームを表示名に設定
  • 管理者権限を持たないユーザーは管理者バーを非表示
    これは、WP-Membersのカスタマイズではありません。

functions.php

// ********************************************
// ****** ここから、WP-Membersのカスタマイズ ******

//usernameをチェックするプラグインRestrict Usernamesを入れたため、メッセージを変更
function my_default_text_strings( ) {
  $text = array('reg_non_alphanumeric' =>  'ログインIDは、 半角英数字、「 - (ハイフン)」、「 _ (アンダースコア)」が使用できます。また、除外文字列を含めることはできません。<br >除外文字列については「利用規約(TOS)」に記述しています。');
  return $text;
}
add_filter( 'wpmem_default_text_strings', 'my_default_text_strings' );

//サイドバーの表示をdisplay_nameにする
function my_sidebar_status_args( $args ) {
    $current_user = wp_get_current_user();
    $args['status_text'] = "こんにちは $current_user->display_name さん <br />";
    return $args;
}
add_filter( 'wpmem_sidebar_status_args', 'my_sidebar_status_args' );

// サイドバーのログインウィジェットにリンクとアバター表示追加
function my_sidebar_status( $string )
{
    $cu = wp_get_current_user();
    if ($cu->has_cap('administrator')) {
       $string = $string . "<p><a href=\"/wp-admin\">ダッシュボード</a></p>";
    }    
    $string = $string . "<p><a href=\"/mypage\">会員ページ</a></p>";
    $user_ID = get_current_user_id();
    $gravatar = '<div style="padding:4px 4px 0 0;float:left;">'
        . get_avatar( $user_ID, '46' )
        . '</div>';
    $string = $gravatar . $string;
    return $string;
}
add_filter( 'wpmem_sidebar_status', 'my_sidebar_status' );

//サイドバーの表示をログインID/会員登録に変更
function my_sidebar_form_filter( $form )
{
    $form = str_replace( 'ユーザー名', 'ログインID', $form );
    $form = str_replace( 'パスワードを', '<br ><br >パスワードを', $form );
    $form = str_replace( '登録', '会員登録', $form );
    return $form;
}
add_filter( 'wpmem_sidebar_form', 'my_sidebar_form_filter' ); 

//ログイン固定ページの表示をログインID/会員登録に変更
function my_login_form_filter( $form, $action )
{ 
    $form = str_replace( 'ユーザー名', 'ログインID', $form );
    $form = str_replace( '新規ユーザー登録', '会員登録', $form );
    return $form;
}
add_filter( 'wpmem_login_form', 'my_login_form_filter', 10, 2 );

//会員登録固定ページの表示を変更
function my_register_form_filter( $form, $toggle, $rows, $hidden ) {
   if ( $toggle == 'new') {
       $form = str_replace( '新規ユーザー', '新規会員', $form );
       $form = str_replace( 'ユーザー名', 'ログインID(英数字、_、- が使用できます)', $form );
    } else {
       $form = str_replace( 'ユーザー名', 'ログインIDは変更できません', $form );
    }
    $form = str_replace( 'ニックネーム', 'ニックネーム(表示名)', $form );
    return $form;
}
add_filter( 'wpmem_register_form', 'my_register_form_filter', 10, 4 );

//会員ページにアバター変更、退会用リンクを追加
function my_member_links( $string ) 
{
    $string = $string . "<ul><li><a href=\"/avatar\">アバター追加変更</a></li><br /><li><a href=\"/withdrawal\">退会</a></li></ul>";
    return $string;
}
add_filter( 'wpmem_member_links', 'my_member_links' );

//会員登録時の利用規約リンクを利用規約(TOS)固定ページに変更
function my_function( $text )
{
    $text = '<a href="/tos" target="_blank">利用規約</a>に同意する';
    return $text;
}
add_filter( 'wpmem_tos_link_txt', 'my_function' );

// ユーザー登録更新時にnicknameをdisplay_nameにセットする
function my_register_data_filter( $fields, $toggle ) {
    if ( !empty( $fields['nickname'] ) ) { // 'nickname'への入力有無を判定
       $fields['display_name'] = $fields['nickname'];
    }
    return $fields;
}
add_filter( 'wpmem_register_data', 'my_register_data_filter', 10, 2 );

// ****** ここまで、WP-Membersのカスタマイズ ******
// ********************************************


// 管理者権限を持たないユーザーは管理者バーを非表示
if ( ! current_user_can( 'manage_options' ) ) {
   show_admin_bar( false );
}
参考 functions.phpGist

デモ用のアカウント作成でのカスタマイズ(備忘録)

デモのユーザー名(ログインID)とパスワードは以下とします。

  • 「会員登録時、会員情報変更時にニックネームを表示名に入れる」を変更します。
  • パスワードリセットでデモ用はエラーにします。
  • パスワード変更でデモ用はエラーにします。
  • 退会でデモ用はエラーにします。
    退会ページのカスタマイズを修正します。

コード内の$DemoUserはデモ用ユーザー名(ログインID)に、$DemoEmailをデモ用メールアドレスにします。

// ユーザー登録更新時にnicknameをdisplay_nameにセットする
// デモ用のmaronの場合は、強制的にメールアドレスを設定
function my_register_data_filter( $fields, $toggle ) {
    if ( !empty( $fields['nickname'] ) ) { // 'nickname'への入力有無を判定
       $fields['display_name'] = $fields['nickname'];
    }
    // 更新で、ユーザー名がmaronであれば、強制的にメールアドレスを設定する。
    if ( $toggle == 'edit' ) {
       $user = get_userdata( $fields['ID'] );
       if ( !empty($user) && $user->user_login == 'maron' ) {
          $fields['user_email'] = "$DemoEmail";
          $fields['confirm_email'] = "$DemoEmail";
       }
    }
    return $fields;
}
add_filter( 'wpmem_register_data', 'my_register_data_filter', 10, 2 );

// パスワードリセットでデモ用はエラーにする。
function my_pwdreset_args( $args )
{
   if ( $args['user'] == '$DemoUser' ) {
      $args['user'] = '';
      $args['email'] = '';
   }
   return $args;
}
add_filter( 'wpmem_pwdreset_args', 'my_pwdreset_args' );

// パスワード変更でデモ用アカウントはエラーにする
function my_wpmem_pwd_change_error( $is_error, $user_ID, $pass1 )
{
   $user = get_userdata( $user_ID );
   if( !empty($user) && $user->user_login == '$DemoUser' ) $is_error = "pwdchangempty";
   return $is_error;
}
add_filter( 'wpmem_pwd_change_error', 'my_wpmem_pwd_change_error' , 10, 3);

// Never Let Me Goで編集者/管理者権限は退会させない。
// デモ用のアカウントは退会出来ないようにする。
function my_nlmg_validate_user( $errobj, $user_id )  
{
   $user = get_userdata( $user_id );
   if( empty($user) || 
       in_array( 'editor', $user->roles ) || in_array( 'administrator', $user->roles )
       || $user->user_login == '$DemoUser' ) {
      return new WP_Error( 'Error', '編集者/管理者権限のユーザーアカウント削除は管理画面より行ってください。'  );
   } else {
      return $errobj;
   }
}
add_filter( 'nlmg_validate_user', 'my_nlmg_validate_user', 10, 2 );
参考 functions.phpGist

Monappy: MBDQ39VHypMQwfyR8SshuHvfPNUz321F6B

Monacoinを投げる
モナゲ(tipmona)ってなに?
そもそもMonacoinってなに?

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください