안녕하세요 @ 톰 ,
귀하의 질문을 올바르게 이해하면 메뉴에 링크를 추가하는 방법을 알 필요가 없습니다 (이미 알고 있음) 대신 링크를 올바르게 리디렉션하는 방법을 알아야합니다.
관리 메뉴 항목에서 외부 URL로 리디렉션
그렇다면 메뉴 항목 기능을 사용 하지 말고 HTTP 헤더를 제외하고는 아무 것도 출력하지 않을 정도로 WordPress를 빨리 "후킹" 해야합니다. 전화를 걸었을 때 가장 빠른 후크 /wp-admin/themes.php
가있는 after_setup_theme
것으로 보이며 제대로 작동하는 것 같습니다.
후크에서 테스트 할 수 있도록 "메뉴 슬러그"를 사용하십시오.
그러나 그것이 작동하려면 먼저 후크 / 함수 add_theme_page
에서 호출을 수정 admin_menu
해야 create_theme_style_page()
합니다. 다섯 번째 매개 변수 (admin 옵션을 구현하기 위해 호출하는 함수)는 필요하지 않으므로 삭제하고 네 번째 매개 변수 ( "menu slug" )를로 변경했습니다 themes.php?goto=build-styleguide-page
.
우리는 문자 그대로 네 번째 매개 변수에 대해 거의 모든 것을 선택할 수 있었지만 themes.php
일관성을 위해 다른 모양 옵션과 동일한 페이지 ( )로 라우팅되도록 리디렉션 할 것 입니다. goto
WordPress에서는 이름을 사용하지 않기 때문에 임의로 이름을 찾았 습니다 .
add_action('admin_menu', 'create_theme_style_page');
function create_theme_style_page() {
add_theme_page(
'Theme Styleguide',
'Theme Styleguide',
'administrator',
'themes.php?goto=build-styleguide-page'
);
}
BTW, 우리는 build_styleguide_page()
이 솔루션에 필요하지 않기 때문에 귀하의 기능을 제거 했습니다.
가장 빠른 후크에서 리디렉션 themes.php
:after_setup_theme
마지막 코드로 함수에 after_setup_theme
후크를 구현 redirect_from_admin_menu()
합니다. 현재 페이지가 themes.php
있는지 확인하고 URL에 URL 매개 변수 goto
가 전달 되었는지 확인합니다 . 그런 다음 / 문을 goto
사용하여 값이 있는지 확인합니다 . 그렇다면 귀하의 명시된 가상의 예를 들어 Google로 리디렉션됩니다. 그렇지 않으면 Google은 관리자 대시 보드로 다시 리디렉션합니다.switch
case
'build-styleguide-page'
add_action('after_setup_theme', 'redirect_from_admin_menu');
function redirect_from_admin_menu($value) {
global $pagenow;
if ($pagenow=='themes.php' && !empty($_GET['goto'])) {
switch ($_GET['goto']) {
case 'build-styleguide-page':
wp_redirect("http://www.google.com");
break;
default:
wp_safe_redirect('/wp-admin/');
break;
}
exit;
}
}
노트:
필요한 경우 추가 리디렉션을 더 쉽게 추가 할 수 있도록 hook / 함수 에 switch
/ case
문 을 사용하기로 선택했습니다 . 더 많은 사례 진술을 추가하십시오.after_setup_theme
redirect_from_admin_menu()
goto
wp_redirect()
과 wp_safe_redirect()
기능이 실제로 종료하지 않는다; WordPress를 중지하고 리디렉션을 재정의하지 않으려면 exit 문을 명시 적으로 발행해야합니다.
이것이 도움이되기를 바랍니다!
'-5'
그리고 그렇지-5
않으면, 열쇠는 유효하지 않은 것으로 간주됩니다. (생각하지 않으면 음수 문자열이 작동합니다.)