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?
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
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
).