WordPress a cet avantage d’être facilement modifiable, modulable, customisable… à condition de savoir comment faire. Il existe de nombreux hooks, des fonctions par dizaines, si bien que, malgré une très bonne documentation, il est difficile de tout connaître. Voici quelques codes qui pourront vous changer la vie.
Ajouter les header et footer de votre site
dans la page de login
Vous trouvez la page de connexion moche ? Vous ne voulez pas recréer entièrement un template pour pouvoir la customiser, seulement pour rajouter vos header et footer ?
Rien de plus simple : la page de login fonctionne avec deux hooks pour ses propres header et footer. L’avantage, c’est qu’ils sont invisibles, vous pouvez donc rajouter les vôtres sans soucis :
add_action('login_head', 'get_header'); add_action('login_footer', 'get_footer');
Et voilà !
Appliquer un template aux descendants d’une page
L’utilisation des templates sur plusieurs pages est assez pratique, mais peut vite devenir ennuyeuse pour un utilisateur. Afin de gagner en temps et en ergonomie, je vous propose ici un petit code qui vous permettra d’appliquer un template aux descendants d’une page sans contraindre le futur administrateur à sélectionner le template pour ses nouvelles pages.
function templateByParents($template){ if(is_page()){ global $post; $parents = get_post_ancestors($post->ID); foreach($parents as $parent_id){ $post_parent = get_post($parent_id); if($post_parent->post_name == 'page-parente'){ $new_template = get_stylesheet_directory() . '/templates/template_enfant.php'; return $new_template; } } } return $template; } add_filter('page_template', 'templateByParents', 99);
Que fait ce code ? Il intercepte le process de choix du template qui va s’afficher, à la toute fin de celui-ci, pour lui donner un autre chemin si la page courante est une descendante de la page ‘page-parente’.
C’est ici un parti-pris que d’utiliser le slug de la page parent plutôt que son ID. A mon sens, on maîtrise plus facilement le slug d’une page que son ID, mais l’utilisation de l’ID fonctionne également et raccourcit un peu le code.
Vous pouvez bien entendu décider de ne vérifier que le parent direct de la page courante. Auquel cas, sachez que le tableau résultant de get_post_ancestors commence toujours par le parent direct, et se termine par le parent le plus lointain. Si la page est à la racine, le tableau est vide.
Un petit conseil : pour ce genre de customisation, évitez d’appeler vos templates page-mon-custom ou content-mon-custom, pour ne pas confondre vos templates utilisant le fonctionnement natif de WordPress et ceux utilisant votre fonctionnement custom. Préférez aussi mettre vos templates dans un répertoire à part, histoire de ne pas trop charger la racine de votre thème 🙂
C’est tout pour ajourd’hui
Je vous retrouverai dans un prochain article pour d’autres petits codes bien utiles.