あるURLを指すWordpressの管理者メニュー項目を追加しようとしています。
http://docs.[currentdomain]
私のプラグインコードは現在:
function user_manual() {
add_menu_page(
__( 'Custom Menu Title', 'textdomain' ),
'Manual',
'manage_options',
'http://docs' . home_url(),
'',
'dashicons-book-alt',
1
);
}
add_action( 'admin_menu', 'user_manual' );
しかし、私が最終的にやるのは、現在のところです:http://docshttp/www.domain.com
ドメイン名をハードコーディングせずにこれを実現するにはどうすればよいですか。
あなたのアプローチの仕方はおそらく間違いです。この関数はその目的のために作成されていないため、外部リンクにadd_menu_page
を使用しないでください。 Add menu pageは、4番目の引数としてmenu_slug
を使用して管理領域にページを追加します。
add_menu_page
/ dev ref
のソースを見てみると、関数に渡したURLがすべて渡されていることがわかります。 plugin_basename
/ dev ref
これは、パスを正規化して置き換え、プラグインディレクトリに対する相対パスを指定します。
代わりに、あなたはそれをadminバーにフックすることができます(これが唯一の目的である場合)
function wpse243214_user_manual($wp_admin_bar) {
$wp_admin_bar->add_menu( array(
//'parent' => 'wpse-parent-id', // parent if any
'id' => 'wpse243214_usermanual',
'title' => __('User Manual'),
'href' => 'http://docs.'.basename(esc_url(home_url())),
) );
}
//change priority(15) accordingly
add_action( 'admin_bar_menu', 'wpse243214_user_manual', 15 );
これで手に入る
また、私はhome_url
にbasename
を使用したことに注意してください。そうしないと、httpまたはhttpsスキーム(http://www.example.com
)のリンクが表示されます。