Cheatsheet

Créer un panneau d'options

Laisser un commentaire

Un panneau d’options s’avère fort utile pour grouper des options qui s’appliquent à de nombreux endroits du site : éléments de réassurance, conditions de livraison et de retours…

Panneau d'options personnalisées WordPress
Les options permettent ici d'administrer un bloc footer

En natif, on utilisera add_menu_page. En revanche, il est rapidement fastidieux de manuellement gérer la création et l’enregistrement de nombreuses zones de saisie.

Il n’y a rien de sorcier cependant. Pour la création, regardez quel est le markup de WordPress à d’autres endroits de l’admin et inspirez-vous en si vous souhaitez conserver un design similaire. Pour la sauvegarde des données, un contrôlera simplement dans la fonction de render si des données ont été postées et on les sauvegardera avec update_option.

add_action('admin_menu', function () {
    add_menu_page('Ma page de réglages', 'Réglages', 'activate_plugins', 'custom_settings', function () {
        if (isset($_POST['my_setting'])) {
            update_option('my_setting', $_POST['my_setting']);
        }

        echo '<form action="" method="post"><input type="text" name="my_setting"><button>Enregistrer</button></form>';
    });
});

Voilà le code minimal. À partir de là, vous pouvez concevoir de complexes panneaux d’admin. Cependant, ACF (et ces équivalents) offre une rapidité de mise en place inégalée.

acf_add_options_page([
    'page_title' => 'Blocs footer',
    'menu_title' => 'Blocs footer',
    'menu_slug' => 'theme-footer-sections',
    'redirect' => false
]);

Et voilà ! À partir de là vous n’avez plus qu’à aller configurer l’ensemble des champs depuis l’interface d’ACF, sans vous souciez du bon markup et de la sauvegarde.

Il convient toutefois de souligner que dans certains cas, la méthode offre des possibilités que ne permet pas ACF. Par exemple, je trouve très utile d’afficher le README du thème dans le menu des réglages. Rien de plus simple.

// Le readme sera ajouté dans le menu Outils
add_action('admin_menu', function () {
    add_submenu_page('tools.php', 'Cheat Sheet', 'Cheat Sheet', 'administrator', 'sheatsheet', function () {
        echo Steroids\parse_markdown(file_get_contents(__DIR__ . '/../README.md'));
    });
});

Commentaires

Rejoignez la discussion !

Vous pouvez utiliser Markdown pour les liens [ancre de lien](url), la mise en *italique* et en **gras**. Enfin pour le code, vous pouvez utiliser la syntaxe `inline` et la syntaxe bloc

```
ceci est un bloc
de code
```