Dans un thème fils, le fichier functions.php est très important. Contrairement aux autres fichiers du thème, celui-ci n’annule pas les fonctions présentes dans le thème parent qui seront toujours actives. Pensez-y !
Dans l’extrait présenté çi-dessous(actif dans dev.xiligroup.com), quelques éléments importants sont présentés :
<?php /* functions for child of twentyten */ function twentyxilidev_setup () { register_nav_menus( array( 'top-primary' => __( 'Top-Primary Navigation', 'twentyten' ) ) ); load_theme_textdomain( 'twentyten', STYLESHEETPATH . '/langs' ); $xili_functionsfolder = get_stylesheet_directory() . '/functions-xili' ; if (file_exists($xili_functionsfolder . '/multilingual-functions.php') && class_exists('xili_language')) { require_once ($xili_functionsfolder . '/multilingual-functions.php'); } } /* actions */ add_action( 'after_setup_theme', 'twentyxilidev_setup', 11 ); // after the parent add_action('wp_head', 'special_head'); if(!is_admin()) { add_action('wp_print_scripts', 'xilifloom_theme_header'); add_action( 'wp_print_scripts','scripts_add',20 ); } define('XILI_CATS_ALL','0'); function special_head() { global $post; // for sliding // to change search form of widget if ( is_front_page() || is_category() || is_search() ) add_filter('get_search_form', my_langs_in_search_form,10,1); // in multilingual-functions.php } // .... |
La première fonction ‘twentyxilidev_setup’ activé par l’action after_setup_theme est important. Elle ajoute un nouvel espace menu. En relançant un loading text domain, seuls les fichiers .mo du sous-dossier du thème fils sont utilisés (et donc pas de modification de ceux du thème parent que l’on a initialement recopiés dans le fils).
L’appel add_action doit être fait après les autres d’où le numéro d”ordre >=11
Dans un extrait de la fonction ‘special_head’, un filtre ajoute les radio-boutons de langue sous le champ de saisie de recherche selon le contexte.
C’est dans ce fichier que l’on va pouvoir annuler des widgets ou des menus du thème parent et non utilisés dans le thème fils.
Ci-après le functions.php du thème twentyten-xili mis à disposition dès le prochain article :
<?php /** * * */ function twentyten_xilidev_setup () { load_theme_textdomain( 'twentyten', STYLESHEETPATH . '/langs' ); // now use .mo of child $xili_functionsfolder = get_stylesheet_directory() . '/functions-xili' ; if (file_exists($xili_functionsfolder . '/multilingual-functions.php') && class_exists('xili_language')) { require_once ($xili_functionsfolder . '/multilingual-functions.php'); } } /* actions */ add_action( 'after_setup_theme', 'twentyten_xilidev_setup', 11 ); add_action( 'wp_head', 'special_head' ); define('XILI_CATS_ALL','0'); /** * * */ function special_head() { // to change search form of widget if ( is_front_page() || is_category() || is_search() ) add_filter('get_search_form', my_langs_in_search_form,10,1); // in multilingual-functions.php } /** * * */ function single_lang_dir($post_id) { $langdir = ((function_exists('get_cur_post_lang_dir')) ? get_cur_post_lang_dir($post_id) : array()); if ( isset($langdir['direction']) ) return $langdir['direction']; } ?> |
La suite bientôt…
Ping : Theme enfant (fils) : le fichier style.css | Extensions xili pour site polyglotte