ノラWEB屋 野良人(のらんど)- 個人営業のWEB屋さん

wordpressで会員制サイトをつくるプラグイン「wp-members」のあれこれ

2015年12月28日

会員制サイトの案件で、Wordpressプラグインの「wp-members」を使用しました。利用にあたって調べた、諸々のメモたちをまとめました。

wp-members

いままでは、いろいろ調べたことをツイートしたりブクマしたりでメモしていましたが、わけわからなくなるのでブログに書き留めておくことにしました。

備忘録を兼ねつつ、自分が困ってあちこち調べ歩いた内容が、同じところで困った人の役に立てばと思います。

wp-membersの導入

導入にあたっては、基本的にこちらの2記事を参考にさせて頂きました。ありがとうございました。

WordPress 会員制サイトの作り方 WP-Members | hijiriworld WP-MembersでWordPressに会員サイトを構築する流れ | わぃおがわ

公式はこちら

WP-Members|RocketGeek Interactive

一部コンテンツは有料。すべて英語なので、うっ…となって日本語の上記ブログに頼りました。。。

分かり易い記事がすでにあるので、導入に関して基本的な解説は差し控えて、その他で困ったことと解決策について以下書き留めておきます。

【1】[wpmem_txt]というテキストが表示される問題

PHPファイルに直接do_shortcodeでフォームを呼び出すと、[wpmem_txt]と[/wpmem_txt]という謎のテキスト出てきます。

解決策1:固定ページ内でショートコードorウィジェットを使う

本来固定ページでの利用を想定されたプラグインなので、do_shortcodeでフォームを呼び出す方法は変則技になります。

素直に固定ページにショートコードを書くのがいちばん良さそうです。

ウィジェットも用意されているので、ヘッダーなど、固定ページ以外にログインフォームを設置したり、条件分岐させたい場合はテンプレートに直接do_shortcodeで設置ぜずウィジェットを使用したら問題ないと思われます。

wp-members ウィジェット

解決策2:function.phpに以下のコードを追加

PHP

add_filter( 'wpmem_login_form_args',    'remove_wpmem_txt_code' );
add_filter( 'wpmem_register_form_args', 'remove_wpmem_txt_code' );
function remove_wpmem_txt_code( $args ){
	$args = array(
		'txt_before' => '',
		'txt_after'  => ''
	);
	return $args;
}

公式で解説されておりました。

Remove an unparsed wpmem_txt shortcode

この記事によると、ふつうにショートコードで設置していても、他のプラグインの影響で[wpmem_txt]~[/wpmem_txt]が表示される場合もあるようです。

そういった場合も上記コードで対応できるそうなので、固定ページやウィジェットを使っているのに[wpmem_txt]~[/wpmem_txt]が出てくる場合はこちらを試してみてください。

[resolved] “[wpmem_txt]” text appears when outputting login page in template file

こちらのやり取りも参考になりました。

【2】セキュリティプラグイン「SiteGuard WP Plugin」と併用するときの注意点

カンタンに高品質なセキュリティ機能を追加できる「SiteGuard WP Plugin」は、自分のWordpressサイトにはすべて導入している良プラグインですが…

SiteGuard WP Plugin SiteGuard WP Plugin

wp-membersと併用する場合に、セキュリティ機能の「画像認証」をオンにするとフォームからログインできなくなるので注意が必要。

wp-membersはwordpressのユーザーログイン機能を利用するため、wp-membersで設置したフォームからログインする際にも、SiteGuardによってユーザーに画像認証を求められているようです。wp-members側では対応してないので、何故かログインできない…と焦ることになります。

SiteGuard WP Plugin 画像認証

▲「画像認証」をオンにするとWPのログインぺージでは画像認証が求められる。ユーザーにも同様に求められるが、wp-membersのログインフォーム上では表示されないためログインエラーとなる。

解決策:SiteGuard WP Pluginと併用する際には「画像認証」をオフにする

今のところ、画像認証オフしか方法はなさそうです。

ユーザーの権限別で画像認証の有無を細かく設定できたりする機能が追加されれば、購読者のみ画像認証オフとかで対応できるかも。今後のバージョンアップに期待しましょう。

【3】メールアドレスでログインできるようにする

デフォルトではユーザー名が必要ですが、英数字のみ対応です。ややこしいのでメールアドレスをユーザー名として使用したい…という場合の方法を調べました。

解決策1:プラグイン「Email as Username for WP-Members」を使用

Email as Username for WP-Members

便利なプラグイン。設定不要で、有効化するだけでOK。

解決策2:function.phpにコードを追加

プラグインを使わずにfunction.phpにコードを追加するだけ、という方法も後になって見つけました。

ユーザー名でもメールアドレスでもログインできるようにする+CSSいじり | ワードプレスでCMSっぽくサイトを作る時のメモ
PHP

function login_with_email_address($username) {
$user = get_user_by(‘email’,$username);
if(!empty($user->user_login))
$username = $user->user_login;
return $username;
}
add_action(‘wp_authenticate’,'login_with_email_address');

これは未検証なので、次に機会があったらやってみようメモ。サクッと入れられて便利そう。

このエントリーをはてなブックマークに追加