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