Skip to content

Instantly share code, notes, and snippets.

@nyankichi-n-n
Last active April 26, 2017 10:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nyankichi-n-n/3e65ae027ee262c1b47129a936fb1ea8 to your computer and use it in GitHub Desktop.
Save nyankichi-n-n/3e65ae027ee262c1b47129a936fb1ea8 to your computer and use it in GitHub Desktop.
[デモ会員サイト構築]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