Ajouter des Options de Thème

flammePour améliorer la prise en charge de mon thème perso et simplifier son administration, j’ai dû ajouter de nouvelles options, les rendre facilement accessibles dans l’administration et tout ça sans vouloir passer par des plugins tiers.

Dans mon cas, je voulais ajouter simplement le code d’insertion Adsense, sans avoir à coller le code, sur les pages mais surtout ne pas utiliser de widget. Par extension, cette méthode permet de créer par exemple 4 blocs d’annonce, mais par la suite, on pourrait choisir le bloc d’annonce, par rapport au positionnement, la page…

Le mécanisme de la mise en place

Les options qui seront créées, seront paramétrables dans le panneau Apparence / Options de l’administration WordPress.
1 – création des variables de définitions dans la class BF_FUNCTIONS [/includes/options.php]. par ex :

var $manouvelleOption;

2 – Pour chaque nouvelle option, on peut charger des valeurs par défaut, dans la fonction default_options() [/includes/options.php]. par ex :

$this->manouvelleOption = sprintf( __('Le texte ici.'));

3 – Ajouter les paramètres pour la sauvegarde des informations et la sauvegarde des modifications ultérieures , dans la fonction save_options() [/includes/options.php] .

$this->manouvelleOption = (string)($_POST['bf-manouvelleOption']);

4 – Modifier la page de configuration des options de thème [/includes/admin.php]. Pour ajouter un onglet contenant le formulaire d’ajout et de modification pour la nouvelle option. Dans la fonction bf_admin_tabs(), on ajoute une entrée dans le tableau qui va récupérer les onglets.

$_default_tabs = array(
'general'        =>    __('General', 'Brozzme'),
'categories'    =>    __('Categories', 'Brozzme'),
'navigation'    =>    __('Navigation', 'Brozzme'),
'layout'        =>    __('Layout', 'Brozzme'),
'manouvelleOption '        =>    __('Ma nouvelle option', 'Brozzme'),
'design'        =>    __('Design', 'Brozzme')
);

Puis on lance la fonction add_action, propre à WordPress, en veillant de nommer de la même façon que les autres options du thème, on obtient le code suivant :

add_action('bf_admin_manouvelleOption ', 'bf_admin_manouvelleOption _form');

On crée la nouvelle fonction d’affichage du formulaire

function bf_admin_manouvelleOption _form() {
?>
<h3><?php _e('Ma nouvelle option', 'Brozzme') ?></h3>
<table>
<tr valign="top">
<th scope="row" colspan="2"><label for="bf-manouvelleOption "><?php _e('Ma nouvelle option', 'Brozzme') ?></label></th>
<td>
<?php echo bf_form_textarea( 'bf-manouvelleOption ', form_prep(stripslashes(bf_get_option('manouvelleOption '))), 'style="width: 70%; height: 100px;"' ) ?><br />
<?php _e('ajoute une description pour la nouvelle option.', 'Brozzme') ?>
</td>
<td></td>
</tr>
</table>
<?php do_action('bf_admin_manouvelleOption _form') ?>
<p>
<input type="submit" name="save" value="<?php _e('Save Changes', 'Brozzme') ?>" />
</p>
<?php
}

5 – Mise en place de la nouvelle option dans le thème.
La mise en place de fonction s diverses et variées sur les pages au sein de ce framework est simplifié par des bouts de code appellant les fonctions qui y sont données. Par exemple, pour l’ensemble des pages contenant un appel vers la fonction bf_below_content(), permet l’affichage de données provenant de cette fonction. Mais si dans cette fonction on demande l’affichage ou l’interprétation de notre option, notre nouvelle option s’affichera sur toutes les pages faisant appel à la fonction bf_below_content.

Dans notre exemple nous allons créer une nouvelle fonction d’affichage pour bien comprendre le fonctionnement du processus.

Création de la fonction dans le fichier [/includes/actions.php]

function bf_below_content_manouvelleOption (){
echo '<div align="center" style="padding-top:15px;">';
echo stripslashes(bf_get_option('manouvelleOption '));
echo '</div>';
do_action('bf_below_content_manouvelleOption ');
}

Intégration dans la template, par exemple sur home.php

<?php bf_below_index_news(); ?>
<?php bf_below_content_manouvelleOption () ?>
<?php bf_below_content() ?>

Plus Aide-mémoire qu’autre chose, je partage et donne des pistes à suivre pour améliorer the Buffet Framework.

Test et mise en place réalisé sous WordPress mu 3.3.1
Thème the-buffet-framework (renommé en brozzme)