2013-02-25 2 views

답변

7

: 나는 관리자 페이지를 방문 할 때 오류가 발생합니다, 그러나

wp_redirect('http://google.com'); 
exit; 

: 콜백 기능 (관리자 페이지의 내용을 생성하는 하나)에서, 나는 다음과 같은 코드가 있습니다 add_submenu_page의 콜백이 너무 늦게 발생하므로 (관리자 사이드 바 및 헤더가 렌더링 된 후에) location 헤더를 더 이상 보낼 수없는 이유가 여기에 있습니다.

이렇게하려면 헤더가 전송되기 전에 WordPress 관리 영역에서 조금 더 일찍 함수를 연결해야합니다 (예 : admin_init).

좋은 방법 : 당신이 wp-admin/admin.php?page=myplugin-custom-page-slug를 보려고 할 때마다 위의 코드는 구글로 리디렉션합니다

function myplugin_preprocess_pages($value){ 
    global $pagenow; 
    $page = (isset($_REQUEST['page']) ? $_REQUEST['page'] : false); 
    if($pagenow=='admin.php' && $page=='myplugin-custom-page-slug'){ 
     wp_redirect('http://google.com'); 
     exit; 
    } 
} 
add_action('admin_init', 'myplugin_preprocess_pages'); 

.

필자의 경우 사용자 정의 페이지를 add_submenu_page을 통해 관리 영역의 기본 (admin.php) 상위 항목에 연결했고 맞춤 페이지의 슬러그를 myplugin-custom-page-slug으로 설정했습니다. 위의 코드에서 값을 바꾸거나 심지어 사용자 정의 관리 페이지가 많은 경우 PHP switch을 추가하십시오.

이렇게하면 맞춤 관리 페이지를 볼 때마다 리디렉션을 수행 할 수있을만큼 일찍 연결했습니다.

업데이트 : (A 다른 접근 방식) this post-

감사합니다, 나는 워드 프레스는 각 사용자 관리 페이지 (load-{parent_page_slug}_page_{plugin_subpage_slug})에 대한에 연결할 수 있습니다 독특한 행동을 생성하는 배웠다. 당신이 부모 admin.php 및 슬러그 myplugin-custom-page와 사용자 정의 관리자 페이지를 추가 한 경우 예를 들어, 다음과 같은 방식으로 자사의 "로드"에 연결할 수 :

add_action('load-admin_page_myplugin-custom-page', 'myplugin_custom_page_redirect'); 
function myplugin_custom_page_redirect() { 
    if ('myplugin-custom-page' == filter_input(INPUT_GET, 'page')) { 
     wp_redirect('http://google.com'); 
     exit; 
    } 
} 

참고 작업 이름 고려해야 할 몇 가지를 가지고 . 밑줄과 대시가 섞여서 확장자가없는 상위 페이지 이름 만 포함해야합니다 ("admin.php"대신 "admin")

관련 문제