会員登録関連メモ

情報を追記している場合はありますが、古い情報を訂正はしていませんので、公開年月日を参照してください。プラグイン・タグ、いずれもワードプレス・PHPのバージョン等によって動作しない場合もあります。

ユーザー登録や会員制機能はプラグインを使ったほうが楽なのだが、今回はユーザー登録は管理者が全て行い、会員向けお知らせカテゴリーが1つという内容で、ユーザー登録や会員制プラグインはどれも多機能で、この内容に合うものがなかったので使わないことにした。
そうすると、あれこれ面倒なことが色々出てきたので覚書としてメモ。

まず、ユーザー登録の項目はAdvanced Custom fields PRO で追加した。
参考までに、ユーザー登録プラグインも片端から試したのだが、ACF PRO で追加した項目を登録ページで表示してくれたのはTHEME MY LOGIN だけだった。

登録・編集画面で不要な項目はfunctions に以下を記入。これはユーザーがプロフィールを編集する場合で、管理者がユーザーを追加する場合は ’admin_footer-user-new.php’, ‘remove_createuser_fields’ 管理者がユーザーを編集する場合は ’admin_footer-user-edit.php’, ‘remove_user_fields’ とした。

add_action('admin_footer-profile.php', 'remove_profile_fields');
function remove_profile_fields()
{ ?>
        <script type="text/javascript">
            jQuery("tr:contains('ウェブサイト')").remove();
            jQuery("h3:contains('あなたについて')").next('.form-table').remove();
            jQuery("h3:contains('あなたについて')").remove();
            jQuery("h3:contains('個人設定')").next('.form-table').remove();
            jQuery("h3:contains('個人設定')").remove();
        </script>
<?php }

ログイン時にダッシュボードにリダイレクトしない。

if ( !is_super_admin() ) {
add_action( 'admin_init', 'redirect_dashiboard' );
}
function redirect_dashiboard() {
   $referrer = $_SERVER['HTTP_REFERER'];
	if ( '/wp-admin/index.php' == $_SERVER['SCRIPT_NAME'] ) {
		wp_redirect(  $referrer );
	}
}

ログアウト時にログイン画面にリダイレクトしない。

function redirect_fix(){
   $referrer = $_SERVER['HTTP_REFERER'];
	wp_safe_redirect( $referrer );
	exit();
}
add_action('wp_logout','redirect_fix');

ユーザーに送られるメールの送信者を変更

add_filter( 'wp_mail_from', 'change_mail_from' );
add_filter( 'wp_mail_from_name', 'change_mail_from_name' );

function change_mail_from_name($from_name) {
	return '送信者名';
}

会員向けカテゴリーをフィードに表示しない。

function exclude_category($query) {
	if ( $query->is_feed ) {
		$query->set('cat', '-2');
	}
return $query;
}
add_filter('pre_get_posts', 'exclude_category');

ログインはログインページに行かずにログインしたいので、SimpleModal Login というプラグインを使用した。ログインリンクに class=”simplemodal-login” を付ければログインフォームを開いてくれるので、サイドバーにログインフォームを付けるよりも楽できれい。
*このプラグインで登録フォームを表示することもできるが、ACF PRO で追加した項目も表示してくれる。