こんにちは@Tom、
あなたの質問を正しく理解していれば、メニューにリンクを追加する方法を知っている必要はありません(すでに知っているようですが)代わりに、リンクを正しくリダイレクトする方法を学ぶ必要がありますか?
管理メニュー項目から外部URLへのリダイレクト
その場合、メニュー項目関数を使用せずに、WordPressを「フック」して、おそらくHTTPヘッダー以外を出力しないようにする必要があります。呼び出し時の最初のフックは/wp-admin/themes.php
そうでafter_setup_theme
あり、うまく機能しているように見えます。
「Menu Slug」を使用して、フックでテストできるようにします
しかし、それは、私たちににあなたの電話を修正する最初の必要動作するように取得するためadd_theme_page
にadmin_menu
フック/あなたのcreate_theme_style_page()
機能を。5番目のパラメーター(adminオプションを実装するために呼び出す関数)は必要ないため削除し、4番目のパラメーター("menu slug")をに変更しましたthemes.php?goto=build-styleguide-page
。
themes.php
一貫性を保つために、他の外観オプションと同じページ()にリダイレクトした場合、4番目のパラメーターにはほぼ文字通り何でも選択できますが、また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'
);
}
ところで、build_styleguide_page()
このソリューションでは必要ないので、関数を削除しました。
最も早いフックでのリダイレクトthemes.php
:after_setup_theme
最後のコードとして、関数にafter_setup_theme
フックを実装しますredirect_from_admin_menu()
。現在のページがであるかどうかthemes.php
を確認し、URLパラメータがURL goto
で渡されたことを確認するテストを行います。次にgoto
、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;
}
}
ノート:
必要に応じてリダイレクトを追加しやすくするために、フック/ 関数でswitch
/ case
ステートメントを使用することを選択しました。さらにcaseステートメントを追加するだけです。after_setup_theme
redirect_from_admin_menu()
goto
機能実際に終了しません。明示的にexitステートメントを発行して、WordPressを停止し、リダイレクトをオーバーライドしないようにする必要があります。wp_redirect()
wp_safe_redirect()
お役に立てれば!
'-5'
ない-5
場合、キーは無効と見なされます(i think)..(iが間違っていなければ、負の文字列は機能します)..