2014/2015 - ICOM Université Lyon 2 - DUCCI 2
Créer un thème à partir d'un template HTML
Session 3
actions
et filters
Un template est un représentation complète des possibilités offertes pour afficher les contenus. Il faut bien prendre en compte toutes les contraintes.
index.php
?Il arrive qu'on retrouve dans différents gabarits le même bloc qui affiche les mêmes informations.
Même s'il est placé à un endroit différent ou avec un style un peu adapté, il est important de créer un fichier réutilisable
Pour charger ces fichiers, il faut ajouter dans le code html des balises <link>
et <script>
.
Selon le site qui utilise le thème, l'URL vers ces fichiers peut être différente. Wordpress propose des outils pour toujours disposer de la bonne URL.
actions
et filters
Dans le coeur Wordpress, des actions sont "appliquées" partouts.
Elles apportent une grande modularité dans la gestion du site.
Le code à écrire pour les utiliser n'est pas très simple et le comportement des actions n'est pas toujours très bien documenté
function ek_theme_setup()
{
//Load localisation
load_theme_textdomain('ek', get_template_directory() . '/languages');
//Enhance theme support
add_theme_support( 'post-thumbnails' );
add_theme_support( 'menus' );
//Register specific image sizes
add_image_size( 'blog-thumb', 136, 126, true );
}
add_action( 'after_setup_theme', 'ek_theme_setup' );
Pour une liste de toutes les actions, voir sur le Codex
filters
Les filters
sont utilisés partout dans Wordpress. Contrairement aux actions, ils sont appliqués à chaque traitement sur les données pour permettre de les manipuler.
function wpse_custom_order($clauses)
{
global $wp_query;
// check for order by custom_order
if (isset($clauses['where']) && strpos($clauses['where'], 'postmeta.meta_key') !== false ) {
$clauses['join'] = str_replace('INNER JOIN', 'LEFT JOIN', $clauses['join']).$clauses['where'];
$clauses['where'] = '';
}
return $clauses;
}
add_filter('get_meta_sql', 'wpse_custom_order', 10, 1);
Les médias renseignés dans la bibliothèque peuvent être utilisés dans les templates en affichage (bandeau de header par exemple)
//Afficher l'image 1 en taille full
wp_get_attachment_image(1, 'full');
//Récupérer l'URL de l'image 18 en taille thumbnail
wp_get_attachment_image_src(1, 'thumbnail');
Il peut être intéressant de définir des formats d'image spécifiques pour optimiser les chargement des page.
On ajoute dans le fichier functions.php
:
//Format 136x126 avec crop
add_image_size( 'blog-thumb', 136, 126, true );
Et on utilise de la même façon:
//Format 136x126 avec crop
wp_get_attachment_image(1, 'blog-thumb');
Wordpress utilise un sytème de traduction pour tous les libellés d'interface.
C'est ce système qui permet de voir l'interface d'administration en différente langue.
Les fichiers de langue sont au format gettext
. J'utilise le logiciel "Poedit" pour les manipuler.
La documentation est assez complète sur cette partie: Codex, Wordpress community
On peut charger un dictionnaire dépendant de la locale
en cours:
load_theme_textdomain( 'domain', get_template_directory() . '/languages' );
Ou alors charger un dictionnaire directement:
load_textdomain( 'domain', dirname(__FILE__) . '/lang/fr.mo' );