Une metabox ‘sitemap’ sous forme de menu déroulant

Une metabox ‘sitemap’ sous forme de menu déroulant

Dans ce petit mémo nous allons voir comment ajouter une métabox sur le panneau d’administration de notre site wordpress. Cell-ci va nous servir à lister tous les articles, pages ou catégories du site.

Voici le code de ma métabox à insérer dans functions.php ou dans un plugin dédié et qui apparaîtra sur le dashboard:

/* * ******************BOX SITEMAP******************** */

function sitemap_widget_function() {
echo "Bonjour! pour visiter une catégorie, page ou article en pariculier : ";
?>
<div style="overflow:auto">
<table>
<tbody>
<tr><th><h2><?php _e('Categories', 'textdomain'); ?></h2></th>
<th><h2><?php _e('Pages', 'textdomain'); ?></h2></th>
<th><h2><?php _e('Articles', 'textdomain'); ?></h2></th>
</tr>
<td id="categories">
<form action="<?php bloginfo('url'); ?>/" method="get">
<div>
<?php
$select = wp_dropdown_categories('hierarchical=0&show_count=1&orderby=name&echo=0&taxonomy=category');
$select = preg_replace("#<select([^>]*)>#", "<select$1 onchange='return this.form.submit()'>", $select);
echo $select;
?>
<noscript><div><input type="submit" value="View" /></div></noscript>
</div></form>
</td>
<td id="pages">
<form action="<?php bloginfo('url'); ?>/" method="get">
<div>
<?php
$select = wp_dropdown_pages('show_option_none=Choisissez une page&show_count=1&orderby=name&echo=0&exclude=84,73');
$select = preg_replace("#<select([^>]*)>#", "<select$1 onchange='return this.form.submit()'>", $select);
echo $select;
?>
<noscript><div><input type="submit" value="View" /></div></noscript>
</div></form>
</td>
<td><select name=\"archive-dropdown\" onChange='document.location.href = this.options[this.selectedIndex].value;'>
<option value=\"\"><?php echo attribute_escape(__('Choisissez un tuto')); ?></option>
<?php wp_get_archives('type=postbypost&format=option&show_post_count=0'); ?> </select>
</td>
</tbody>
</table>
</div>
<?php
}

function sitemap_add_dashboard_widgets() {
wp_add_dashboard_widget('sitemap_widget', 'Cortechs widget', 'sitemap_widget_function');
}

add_action('wp_dashboard_setup', 'sitemap_add_dashboard_widgets');

Je place un texte d’introduction, puis sous forme de tableaux, je créer les trois titres de ma métabox dans des th.

En dessous je place dans trois ‘td‘ un wp_ dropdown_catogories, un wp_dropdown_pages puis je récupère les articles avec un wp_get_archives que je place dans un ‘select-option‘. Je conserve ici un html classique pour conserver la forme des précédentes entrées.

Dans l’html de mon champ select , contrairement aux deux fonctions wp_dropdown, je n’ai pas de javascript inclus pour la redirection automatique au clic, je dois donc rajouter du js pour qu’au clic sur l’une des options, l’utilisateur soit directement redirigé vers la page souhaitée.

Dans notre wp_get_archives, c’est le type= »postbypost » qui va indiquer à wordpress que je veux récupérer les articles.