Salut, je construis une page d'options de plugin. Ce que j'aimerais vraiment faire, c'est implémenter des onglets répétables (ce que je sais, c'est possible avec l'API Settings), mais avec une modification que je n'ai vue dans aucun panneau d'options jusqu'à présent. J'aimerais créer de nouveaux onglets à la volée, exactement comme la section "Menus" de l'interface utilisateur d'administration.
Y at-il un moyen standard de le faire?
Les onglets WordPress sont des balises HTML statiques non standard. Vous pouvez uniquement ajouter le balisage dans votre fichier de thème functions.php
ou dans votre plug-in.
<h2 class="nav-tab-wrapper">
<a href="#" class="nav-tab">Tab #1</a>
<a href="#" class="nav-tab nav-tab-active">Tab #2</a>
<a href="#" class="nav-tab">Tab #2</a>
</h2>
Dans ce plugin d'aide (WordPress Admin Style) vous trouverez les références de classe pour le balisage par défaut de la zone d'administration.
Instantané complet du plugin. L’instantané précédent est un détail situé au bas de celui-ci.
Cliquez pour agrandir:
Créez un tableau d'onglets que vous souhaitez créer sur votre page d'administration. Cela contiendrait très probablement vos pages de menu ajoutées par votre plugin. Les clés de tableau seraient le slug de page et les valeurs de tableau seraient le texte de tabulation.
Écho la fonction où vous voulez que les onglets soient affichés dans votre plugin.
<?php
// Create WP Admin Tabs on-the-fly.
function admin_tabs($tabs, $current=NULL){
if(is_null($current)){
if(isset($_GET['page'])){
$current = $_GET['page'];
}
}
$content = '';
$content .= '<h2 class="nav-tab-wrapper">';
foreach($tabs as $location => $tabname){
if($current == $location){
$class = ' nav-tab-active';
} else{
$class = '';
}
$content .= '<a class="nav-tab'.$class.'" href="?page='.$location.'">'.$tabname.'</a>';
}
$content .= '</h2>';
return $content;
}
$my_plugin_tabs = array(
'my-plugin-overview' => 'Overview',
'my-plugin-settings' => 'Settings',
'my-plugin-uninstall' => 'Uninstall'
);
echo admin_tabs($my_plugin_tabs);
?>
J'ai mis à jour la solution de Michael afin qu'elle puisse être utilisée comme onglet dans une seule page. En appelant main_function()
, vous produirez les onglets qui relieront les fichiers décrits dans la section $my_plugin_tabs
.
Par exemple, en cliquant sur Paramètres, vous aurez l’onglet charge settings.php
et les onglets visibles. J'ai pensé qu'il pourrait être utile de télécharger également ce fichier:
<?php
// Create WP Admin Tabs on-the-fly
function admin_tabs( $page, $tabs, $current=NULL ) {
if ( is_null( $current ) ) {
if ( isset( $_GET['tab'] ) ) {
$current = $_GET['tab'];
}
}
$content = '';
$content .= '<h2 class="nav-tab-wrapper">';
foreach( $tabs as $tab => $tabname ) {
if ( $current == $tab ) {
$class = ' nav-tab-active';
} else {
$class = '';
}
$content .= '<a class="nav-tab' . $class . '" href="?page=' .
$page . '&tab=' . $tab . '">' . $tabname . '</a>';
}
$content .= '</h2>';
echo $content;
if ( ! $current )
$current = key( $tabs );
require_once( $current . '.php' );
return;
}
function main_function() {
$my_plugin_tabs = array(
'bundles' => 'Bundles',
'settings' => 'Settings',
);
$my_plugin_page = 'bundles';
echo admin_tabs( $my_plugin_page, $my_plugin_tabs );
}