2016-09-02 3 views
0

역할 "공급 업체"인 사용자에게 두 페이지 (/ home,/inbox) 사용자가 자동으로 "/받은 편지함"페이지로 리디렉션되는 것보다 다른 페이지에 액세스하려고합니다. 기능을 달성하기 위해 아래 코드를 삽입했지만 function.php에이 코드를 추가 한 후 사이트를 다시 다시 리디렉션하고 마침내 "Page isn ' t 제대로 방향이 바뀌 었습니다. " 제 시도한 코드 나 다른 해결책이 무엇이 잘못된지 제안하십시오.Wordpress에서 특정 역할을 가진 특정 사용자에 대해서만 두 개의 (/ home,/inbox) 페이지에 대한 액세스 권한 부여

function vendor_redirect() { 
    global $post; 
    if(current_user_can('Vendor') && !in_array($post->slug,array("home","inbox"))) { 
     wp_safe_redirect('/inbox'); 
    } 
} 
add_action('template_redirect', 'vendor_redirect'); 
+0

먼저 wp_safe_redirect 후, "exit"를 넣어해야() - https://codex.wordpress.org/Function_Reference/wp_safe_redirect –

+0

그것은 있다면 끊임없이 반복되고, 조건문이 항상 참이어야합니다. 'in_array'는 대소 문자를 구별합니다, 슬러그가 Inbox가 아닌가? – RelativePHPNewbie

+0

답장을 보내 주신 분들께 감사드립니다.하지만 주된 문제는 페이지 슬러그를 얻으려고 시도하는 방식입니다. "$ post-> post_name"또한 올바른 방법으로 wp_safe_redirect를 종료해야합니다. 왜냐하면 코덱스가 제안하기 때문입니다. –

답변

0

방법은 내가 페이지 슬러그를 얻기 위해 노력 주요 문제는 슬러그를 얻을 수있는 올바른 방법은 "$ 포스트> POST_NAME"입니다. 사본을 제안하기 때문에 또한 나뿐만 아니라 wp_safe_redirect 후 종료를 넣어 :

모두의
function vendor_redirect() { 
    global $post; 
    if(current_user_can('Vendor') && !in_array($post->post_name,array("home","inbox"))) { 
     wp_safe_redirect(get_permalink(get_page_by_path('inbox'))); 
     exit; 
    } 
} 
add_action('template_redirect', 'vendor_redirect'); 
관련 문제