Dans cette session, nous allons explorer l'utilisation des Hooks (add_action, add_filter) dans WordPress et intégrer Advanced Custom Fields (ACF) pour enrichir notre thème avec des champs personnalisés.
- Introduction aux Hooks WordPress
- Utilisation des Hooks
add_actionetadd_filter - Exemples concrets d'utilisation
- Intégration de Advanced Custom Fields (ACF)
- Mise en pratique avec des champs personnalisés
- Conclusion
Les Hooks sont un des concepts les plus puissants de WordPress. Ils permettent de modifier ou d’étendre le comportement de WordPress sans modifier le cœur du CMS.
Il existe deux types principaux de Hooks :
add_action: Permet d'ajouter du code à un moment spécifique dans l'exécution de WordPress.add_filter: Permet de modifier ou filtrer une valeur avant qu’elle ne soit affichée ou utilisée.
Exemple : Ajouter du texte après le contenu de chaque article.
Ajoutez ce code dans functions.php :
function ajouter_texte_apres_article($content) {
if (is_single()) {
$content .= '<p>Merci d’avoir lu cet article !</p>';
}
return $content;
}
add_filter('the_content', 'ajouter_texte_apres_article');Exemple : Modifier le titre de chaque article
Ajoutez ce code dans functions.php :
function modifier_titre_article($title, $id) {
// Vérifier si nous sommes bien sur une page single
if (is_single()) {
// Vérifier que l'ID correspond bien à un article (post) et non à un élément de menu
if (get_post_type($id) === 'post') {
$title = '★ ' . $title;
}
}
return $title;
}
add_filter('the_title', 'modifier_titre_article', 10, 2);Ces exemples montrent comment les Hooks permettent de personnaliser facilement un site WordPress sans modifier directement les fichiers de base.
Ajoutez ce code dans functions.php pour charger un fichier script.js dans le thème :
<?php
/**
* Fonctions principales du thème
*/
// 1) Activer la gestion des menus
function my_theme_register_menus() {
register_nav_menu('primary', __('Menu Principal', 'my-simple-theme'));
}
// 2) Charger les styles et scripts
function mytheme_styles_scripts() {
// Charger la feuille de style principale du thème
wp_enqueue_style('my-simple-theme-style', get_stylesheet_uri());
// Charger le fichier JavaScript personnalisé situé dans le dossier js/
wp_enqueue_script('script-name', get_template_directory_uri() . '/js/script.js', array(), false, true);
}
// Ajouter les actions WordPress pour charger les styles et scripts et enregistrer le menu
add_action('wp_enqueue_scripts', 'mytheme_styles_scripts');
add_action('after_setup_theme', 'my_theme_register_menus');Ajoutez ce code dans functions.php :
function personnaliser_footer() {
echo '<p>© ' . date('Y') . ' - Tous droits réservés.</p>';
}
add_action('wp_footer', 'personnaliser_footer');- Installez le plugin Advanced Custom Fields depuis le répertoire des plugins WordPress.
- Activez-le.
- Allez dans ACF > Champs personnalisés.
- Ajoutez un nouveau groupe de champs.
- Créez un champ nommé
sous_titrede type Texte.
Ajoutez ce code dans single.php :
<?php
get_header();
?>
<article>
<h1><?php the_title(); ?></h1>
<h2><?php the_field('sous_titre'); ?></h2>
<div><?php the_content(); ?></div>
</article>
<?php
get_footer();Cela permettra d’afficher un sous-titre personnalisé pour chaque article si le champ sous_titre est renseigné dans l’administration.
Ajoutez ce code pour afficher un texte personnalisé depuis ACF sur la page d'accueil :
<h1><?php the_title(); ?></h1>
<p><?php the_field('texte_accueil'); ?></p>Assurez-vous d’avoir créé un champ personnalisé nommé texte_accueil dans l’admin.
Dans cette session, nous avons exploré :
- Les Hooks WordPress (
add_action,add_filter) et leur utilisation. - Comment ajouter des fonctionnalités avec des Hooks.
- L’intégration du plugin Advanced Custom Fields (ACF) pour enrichir le contenu.
- Des exemples concrets pour appliquer ces concepts dans un projet WordPress.
Ces outils sont essentiels pour développer des thèmes WordPress professionnels et personnalisés.
Ce guide vous permet d'exploiter pleinement les Hooks WordPress et d’intégrer ACF efficacement dans votre thème. N’hésitez pas à tester et expérimenter !