[デモ会員サイト構築]13. 会員機能(WP-Membersのカスタマイズ)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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 ); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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