web-dev-qa-db-ja.com

"add_menu_page"のhome_urlにサブドメインを追加

ある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

ドメイン名をハードコーディングせずにこれを実現するにはどうすればよいですか。

1
Jay

あなたのアプローチの仕方はおそらく間違いです。この関数はその目的のために作成されていないため、外部リンクに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 );

これで手に入る

WP Admin Bar

また、私はhome_urlbasenameを使用したことに注意してください。そうしないと、httpまたはhttpsスキーム(http://www.example.com)のリンクが表示されます。

1
bravokeyl