[デモ会員サイト構築]13. 会員機能(WP-Membersのカスタマイズ)
<?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 ); | |
} |
<?php | |
// 一行目はシンタックスハイライトするために追加しています。 | |
// ユーザー登録更新時に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 ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment