こんばんは。
function custom_redirect(){
if( current_user_can( 'subscriber' ) ){
if( urldecode( get_permalink() ) === 'https://aaaa.com/001/abc.html' ){
wp_redirect( 'https://aaaa.com/' );
exit;
}
}
}
add_action( 'template_redirect' , 'custom_redirect' );
これで動作しますでしょうか?
ご返信いただき誠にありがとうございます。
複数のテストサイトで試したところ、あるサイトは正常に動作し、あるサイトでは機能しませんでした。
機能しなかったサイトは、システムをプラグインで入れており、それが影響しているのではないかと思いました。
functions.phpの優先順位などが影響かもしれませんが、どう修正すればよいか分かりませんでした。
「Code Snippets」プラグインを使って、プライオリティを変更など試してみましたがダメでした。
何か解決方法があれば良いのですが。。。
あと、追加質問で申し訳ございません
(1つ目)
「特定のURL配下にアクセスした場合(https://aaaa.com/001/)※001ディレクトリ含む」とする時は、調べて以下のように「.*」を追加すればよいと思ったのですがダメでした。
‘https://aaaa.com/001/.*’
「特定のURL配下にアクセスした場合」の方法を知りたく存じます。
(2つ目)
初回質問と逆になると思いますが、
・特定の権限者(例:購読者)のみ、特定のURL配下(https://aaaa.com/001/)※001ディレクトリ含む、にアクセスできる
・他の権限者はリダイレクト(https://aaaa.com/)する
上記方法もご存じでしたらご教授いただきたく思います。
お手数ですがよろしくお願いいたします。
こんにちは。
『システムをプラグインで入れており』が何を意味するのかわからないので、解決方法は不明です。
(1つ目)
function custom_redirect(){
if( current_user_can( 'subscriber' ) ){
if( preg_match( '/^https:\/\/aaaa\.com\/001\//' , urldecode( get_permalink() ) ){
wp_redirect( 'https://aaaa.com/' );
exit;
}
}
}
add_action( 'template_redirect' , 'custom_redirect' );
(2つ目)
function custom_redirect(){
if( !current_user_can( 'subscriber' ) ){
if( preg_match( '/^https:\/\/aaaa\.com\/001\//' , urldecode( get_permalink() ) ){
wp_redirect( 'https://aaaa.com/' );
exit;
}
}
}
add_action( 'template_redirect' , 'custom_redirect' );
これで動作するかと思います。なお、関数名は適宜変更してください。
preg_match()については、
PHP:preg_match – Manual
正規表現については、
【5分でまるっと理解】PHP正規表現の使い方まとめ
PHP の正規表現の基本的な使い方
正規表現チェッカー PHP: preg_match() / JavaScript: match()
等をご参照ください。
承認待ちになってしまいましたので、再度返信します。
『システムをプラグインで入れており』が何を意味するのかわからないので、解決方法は不明です。
(1つ目)
function custom_redirect(){
if( current_user_can( 'subscriber' ) ){
if( urldecode( get_permalink() ) === 'https://aaaa.com/001/abc.html' ){
wp_redirect( 'https://aaaa.com/' );
exit;
}
}
}
add_action( 'template_redirect' , 'custom_redirect' );
(2つ目)
function custom_redirect(){
if( !current_user_can( 'subscriber' ) ){
if( preg_match( '/^https:\/\/aaaa\.com\/001\//' , urldecode( get_permalink() ) ) ){
wp_redirect( 'https://aaaa.com/' );
exit;
}
}
}
add_action( 'template_redirect' , 'custom_redirect' );
これで動作するかと思います。なお、関数名は適宜変更してください。
ご返信いただき誠にありがとうございます。
うまくいくサイトでは、ディレクトリ配下制限が(2つ目)の記述で動作し、「!」を付けるか、付けないかで、権限者にアクセスリダイレクト、あるいは許可を与えることができました。
うまくいかないサイトでは、プラグインの影響があると思っておりますので、もう少し調べてみます。
この度は大変助かりました。
御礼申し上げます。
(1つ目)はこちらでした。再返信の際に間違えたようです。
function custom_redirect(){
if( current_user_can( 'subscriber' ) ){
if( preg_match( '/^https:\/\/aaaa\.com\/001\//' , urldecode( get_permalink() ) ) ){
wp_redirect( 'https://aaaa.com/' );
exit;
}
}
}
add_action( 'template_redirect' , 'custom_redirect' );
解決したようで良かったです。
参照URLやご親切なご回答誠にありがとうございます。
改めてお礼申し上げます。