web-dev-qa-db-fra.com

Ajout de sous-domaine à home_url pour "add_menu_page"

J'essaie d'ajouter un élément de menu d'administrateur Wordpress qui pointe vers une URL qui est

http://docs.[currentdomain]

Mon code de plugin est actuellement:

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' );

Mais ce que je finis avec est actuellement: http://docshttp/www.domain.com

Comment puis-je y parvenir sans coder en dur le nom de domaine?

1
Jay

La manière de votre approche est sans doute fausse. Il ne faut pas utiliser add_menu_page pour les liens externes car cette fonction n’a pas été créée à cette fin. Ajouter une page de menu ajoute une page dans la zone d'administration avec menu_slug comme quatrième argument.

Si nous examinons add_menu_page / dev ref source, nous pouvons remarquer que quelque soit l'URL que nous passons dans la fonction soit passé plugin_basename / dev ref qui normalise et remplace le chemin en nous donnant le chemin relatif au répertoire du plugin.


Au lieu de cela, vous pouvez l’accrocher à la barre d’administration qui, à mon avis, est le bon endroit pour mettre un lien externe (si c’est là le seul but)

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 );

Avec cela nous obtenons

WP Admin Bar

Notez également que j’ai utilisé basename pour home_url sinon nous obtenons un lien avec un schéma http ou https (http://www.example.com).

1
bravokeyl