/**
* マイページへのアクセス制限
*/
add_action('parse_request', 'mypageAccess');
function mypageAccess($args) {
// カレントユーザー取得
$user = wp_get_current_user( );
// カレントポスト取得
if(!empty($args->query_vars['name'])) {
list($current_post) = query_posts('name='.$args->query_vars['name']);
}
else if(!empty($args->query_vars['pagename'])) {
$current_post = get_page_by_path($args->query_vars['pagename']);
}
else if(!empty($args->query_vars['p'])) {
$current_post = get_post($args->query_vars['p']);
}
else if(!empty($args->query_vars['page_id'])) {
$current_post = get_post($args->query_vars['page_id']);
}
else {
$current_post = null;
}
if(!empty($current_post)) {
// 先祖post取得
$ancestor_id = array_pop(get_post_ancestors($current_post->ID));
$ancestor = null;
if($ancestor_id) {
$ancestor = get_post($ancestor_id);
}
// 会員ページ
if($current_post->post_name=='mypage' ||
($ancestor_id && $ancestor->post_name=='mypage')){
// ログインしていない
if(empty($user->ID)) {
wp_redirect(wp_login_url());
exit;
}
// 会員ユーザーではない
else if(!in_array('subscriber', $user->roles)){
wp_redirect(home_url());
exit;
}
}
}
}
コメントを残す