情報を追記している場合はありますが、古い情報を訂正はしていませんので、公開年月日を参照してください。プラグイン・タグ、いずれもワードプレス・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 で追加した項目も表示してくれる。