Tutoriel WordPress : Introduction à la création d’un thème WordPress personnalisé


VII – Administration du thème

Notre thème est utilisable comme tel mais nous pourrions ajouter de nouvelles fonctionnalités ou encore permettre à l’utilisateur de paramétrer certaines fonctions. Nous allons voir dans cette section comment créer une interface d’administration et personnaliser certains des éléments.

1°) Initialisation de l’espace d’administration

Si vous avez déjà développer des extension WordPress, vous trouverez certaines similitudes. Dans le cas contraire pas de panique ! Encore une fois, WordPress va grandement nous faciliter la tâche.

Code de la page functions.php
/**
 * Ajoute un menu au bloc de gestion des thèmes
 */
function sldesign_options(){
	add_theme_page(__('slDesign settings','sldesign'), __('slDesign settings','sldesign'), 10, 'sldesign-settings', 'sldesign_admin');
}

/**
 * Administration slDesign
 */
function sldesign_admin(){
	?>
<!-- Administration du thème slDesign -->
<div class="wrap">
<h2 class="alignleft"><?php _e("slDesign theme settings","sldesign");?></h2>
<a class="alignright" style="margin: 20px;"	href="http://sldesign.openwab.com/projets/sldesign-wordpress-theme">slDesign Home Page</a>
<!-- Le code de la page -->
</div>
	<?php
}

//Initialise la page d'administration et les options
add_action('admin_menu', 'sldesign_options');

Résultat :

7.1.1-wpt-admin-menu-sld-theme

Nous pouvons maintenant accéder à notre interface d’administration de notre thème.

Nous allons initialiser des options et permettre aux utilisateurs de modifier certains éléments.

Etape 1 : Initialiser nos options

Nous allons créer un array avec nos différentes options ; dans notre fichier ‘functions.php’ nous allons initialiser nos options sous forme de tableau. Dans cet exemple, j’ai simplement initialiser 3 options :

  • Meta : Permet de spécifier des mots clés
  • Footer : Permet à l’utilisateur d’ajouter des éléments au footer
  • CSS : Permet à l’utilisateur de spécifier ces propres données CSS

Ceci n’est qu’un exemple, vous pouvez ajouter autant d’options que vous souhaitez.

Code du fichier functions.php
//options du thème - Options par défaut
$options = array(

array(
   "id" => "sldesign_meta",
   "default" => "",
   "type" => "sldesign_meta"),
array(
	"id"=> "sldesign_footer",
	"default" => "",
	"type" => "sldesign_footer"
),
array(
   "id" => "sldesign_css",
   "default" => "",
   "type" => "sldesign_css")
);

Maintenant, dans notre function ‘sldesign_options()’, nous allons initialiser nos options

Code de la fonction sldesign_options() – dans le fichier functions.php
/**
 * Function pour la gestion des options
 */
function sldesign_options(){
	global $options;

	// Initialise les options par défaut - enregistrement en base de données
	foreach ($options as $default) {
		if(get_option($default['id'])=="") {
			update_option($default['id'],$default['default']);
		}
	}

	//Ajoute un lien au menu "apparence"
	add_theme_page(__('slDesign settings','sldesign'), __('slDesign settings','sldesign'), 10, 'sldesign-settings', 'sldesign_admin');
}

Si on regarde dans notre base de données, on remarque que les options sont bien présentes :

7.1.2-wpt-database-options

Fonction utile :

update_option( $option_name, $newvalue ) : Fonction permettant de mettre à jour les options dans la base de données

Etape 2 – Formulaire d’administration des options

Nous allons maintenant créer un formulaire, ce formulaire nous permettra de mettre à jour et de modifier les options de notre thème.

Il s’agit d’un simple formulaire html inclut dans la fonction sldesign_admin();

Code de la fonction sldesign_admin() – dans le fichier functions.php

/**
 * Administration slDesign
 */
function sldesign_admin(){
	global $options;
	?>
<!-- Administration du thème slDesign -->
<div class="wrap">
<h2><?php _e("slDesign theme settings","sldesign");?></h2>
<?php
//vérifie si le formulaire a été soumis dans ce cas on affiche un message
if ( $_REQUEST['sldesign_saved'] ) {
	//Ici récupération des données du formulaire et enregistrement
	?>
	<div id="message" class="updated fade"><p><strong><?php _e('Settings saved.','sldesign'); ?></strong></p></div>
	<?php
}else{
	//Affiche le formulaire
	?>
	<div id="poststuff" class="metabox-holder">
		<form action="" method="post">
			<div class="stuffbox">
				<h3><label for="link_url"><?php _e("General","fusion"); ?></label></h3>
				<div class="inside">
				<table class="form-table" style="width: auto">
				<tr>
					<th><?php _e('Header Meta', 'sldesign');?> : </th>
					<td><input size="60" name="sldesign_meta" value="<?php print get_option('sldesign_meta'); ?>"/></td>
				</tr>
				</table>
				</div>
			</div>
			<div class="stuffbox">
				<h3><label for="link_url"><?php _e("Footer","fusion"); ?></label></h3>
				<div class="inside">
				<table class="form-table" style="width: auto">
				<tr>
					<th><?php _e('Footer option', 'sldesign');?> : <br /><?php _e("(HTML allowed)","sldesign"); ?></th>
					<td><textarea class="code" rows="4" cols="60" name="sldesign_footer" ><?php print get_option('sldesign_footer'); ?></textarea></td>
				</tr>
				</table>
				</div>
			</div>
			<div class="stuffbox">
				<h3><label for="link_url"><?php _e("Css","fusion"); ?></label></h3>
				<div class="inside">
				<table class="form-table" style="width: auto">
				<tr>
					<th><?php _e("Modify anything related to design using simple CSS","sldesign"); ?><br /><br /><span style="color: #ed1f24"><?php _e("Avoid modifying theme files and use this option instead to preserve changes after update","sldesign"); ?></span></th>
					<td valign="top">
         <label>
          <textarea class="code" rows="12" cols="60" name="sldesign_css"><?php print get_option('sldesign_css'); ?></textarea>

         </label>
        </td>
        <td valign="top">
        Examples:
          <p><em style="color: #5db408">/* Set a fluid page width */</em><br /><code>#page{ width: 95%; }</code></p>
              <p><em style="color: #5db408">/* Make links red, without background on mouse over */</em><br /><code>a, a:hover{ color: #ed1f24; }<br />a:hover{ background: none; }</code></p>
              <p><em style="color: #5db408">/* Decrease header height to 150 pixels and hide the logo */</em><br /><code>#page-wrap2, #header{ height: 150px; }<br />body{ background-position: left 150px; }<br />a#logo{ display: none; }</code></p>
              <p><em style="color: #5db408">/* Increase tag line text size */</em><br /><code>#topnav, #topnav a{ font-size: 130%; }</code></p>
              <p><em style="color: #5db408">/* Hide post information bar */</em><br /><code>.postinfo{ display: none; }</code></p>
              <p><em style="color: #5db408">/* Make tabs narrower */</em><br /><code>#tabs{ letter-spacing: -0.04em; font-size: 13px; }<br />#tabs a span span{ padding: 4px 0 0 0; }</code></p>
              <p><em style="color: #5db408">/* Use Windows Arial style fonts, instead of Mac's Lucida */</em><br /><code>body, input, textarea, select, h3, h4, h5, h6,<br />#sidebar h2.title, #sidebar2 h2.title{ font-family: Arial, Helvetica; }</code></p>

        </td>
				</tr>
				</table>
				</div>
			</div>
			<input name="sldesign_save" type="submit" class="button-primary" value="<?php _e('Save changes','sldesign'); ?>" />
			<!-- Simple trigger du formulaire... -->
			<input type="hidden" name="sldesign_saved" value="sldesign_save" />
		</form>
	</div>
	<?php
}
?>
</div>
	<?php
}

Nous avons maintenant un formulaire

7.1.3-wpt-options-formulaire

Reste encore à récupérer nos données de formulaire et à mettre à jour nos options. Nous pouvons réaliser cette opération avec la fonction

//Ici récupération des données du formulaire et enregistrement
update_option('sldesign_meta',$_POST['sldesign_meta']);
update_option('sldesign_footer', $_POST['sldesign_footer']);
update_option('sldesign_css', $_POST['sldesign_css']);

Note : Ce code est volontairement simplifié, nous aurions pu effectuer certaines vérifications avant la mise à jour

Si nous modifions les éléments du formulaire et postons les données, les informations seront mises à jour dans la base de données.

Etape 3 – Appliquer les options au thème

Dernière étape, récupérer ces options dans notre thème ; il suffit de récupérer l’option dans la base avec la fonction ‘get_option()’.

Voici le formulaire après mise à jour :

Figure 7.1.4 - Mise à jour des options du thème

Code du fichier footer.php permettant d’insérer le footer personnalisé.

<?php
if(get_option('sldesign_footer') != ""){
	echo get_option('sldesign_footer');
}
?>

Le résultat est le suivant :

Figure 7.1.5 - Résultat après récupération de l'option

Share

Pages: 1 2 3 4 5 6 7 8 9 10

, , , , , ,

  1. #1 by romain on 29 novembre 2010 - 13 h 25 min

    Merci pour cet article riche en détails, super boulot et depuis le temps que je cherchais une explication récente de créa de thème wordpress… et en français en plus!

(ne sera pas publié)