thème enfant : after mais pas trop tôt !

add_action( 'after_setup_theme', 'twentyfifteen_xilidev_setup', 11 ); // called after parent

Petit retour sur le fichier functions.php d’un thème enfant (child thème) et le moment où il est mis en place (voir wp_settings en action) :

Le fichier functions.php du thème enfant est mis en place avant celui du parent, cela permet donc de remplacer des fonctions proposées par le parent et de les personnaliser dans le thème enfant. C’est ainsi qu’on voir ce type de lignes dans un thème parent bien écrit comme ceux fournis avec les versions de WordPress :

if ( ! function_exists( 'twentyfifteen_fonts_url' ) ) :
/**
 * Register Google fonts for Twenty Fifteen.
 *
 * @since Twenty Fifteen 1.0
 *
 * @return string Google fonts URL for the theme.
 */
function twentyfifteen_fonts_url() {

Revenons à l’action after_setup_theme qui par défaut à une priorité de niveau 10. Pourquoi la mettre à 11 ? Comme celle du parent est à dix (10), elle sera appelée en premier et celle du thème sera appelée ensuite. Le contenu de l’action du parent sera complété par quelques ajouts dans le contenu de l’enfant. Pas nécessaire de tout réécrire.
Cela permet par exemple d’annuler un filtre proposé par le parent comme dans cet exemple pour twentyfifteen in github

remove_filter( 'walker_nav_menu_start_el', 'twentyfifteen_nav_description');

Pour ce qui veulent continuer à en parler : rendez-vous au WordCamp Lyon ce 5 juin 2015.

Twenty Fifteen xili : rendre la description des éléments du menu traduisible

A gauche, ce thème livré par défaut “2015” a prévu de pouvoir afficher un petit texte sous chaque élément du menu. Pour une catégorie, il s’agit de la description définie au moment de la déclaration de la catégorie. La version 1.0.1 du thème enfant 2015-xili ici en action ajoute, dans son fichier functions.php un filtre (walker_nav_menu_start_el) lié au ‘Walker’ après avoir enlevé celui créé par le thème parent 2015 (remove_filter( 'walker_nav_menu_start_el', 'twentyfifteen_nav_description');).

Cette nouvelle partie du Walker apporte deux choses :

  1. La traduction de la description de l’item menu,
  2. Le contexte (menu_description dans la fonction gettext) pour cette traduction qui permet de modifier la longueur des textes pour le menu. Les traductions seront donc différentes de celles du texte utilisé souvent par exemple en tête de page catégorie.

Comme la description est parfois longue même dans la langue racine (en_us) on peut créer une traduction en_us avec un texte plus court convenant mieux au menu. C’est l’occasion de rappeler que le texte codé en dur dans le thème peut toujours être adapté par son adaptation/traduction. L’extension xili-dictionary permet de faire cela rapidement ‘en ligne’ sans passer par poEdit sur son ordinateur.