xili-language : une installation plus complète grâce aux ancrages (hooks)

[Note :] Un article actualisé sur les ancrages (en anglais) est ici disponible.

Comme le permet la structure multilingue de ce site, cet article ne sera pas la traduction stricto-sensu de celui en anglais. Pour un concepteur de thème wordpress qui a un peu l’habitude du php, il lui sera aisé de lire l’article original et de voir comment l’utilisation de l’ancrage ‘xili_language_list’ pour le template_tag xili_language_list() que l’on place dans la colonne latérale des menus du thème. L’ajout de la fonction personnalisée dans le fichier functions.php du thème et de sa function d’accrochage à l’ancrage est compréhensible aisément.

Sur le thème de ce site, cette fonction spécifique du thème ajoute les drapeaux et les trie selon un ordre spécifié dans la fonction.

Dans un article précédent, on s’est interrogé sur les différences entre les fonctions ajoutées dans une extension et celles contenues dans le fichier functions.php du thème utilisé. Dans l’extension xili-language, le choix suivant a été fait : tout ce qui concerne des fonctions essentielles est dans le coeur (core) de l’extension et tout ce qui concerne une personnalisation pour coller au design (look) du thème est dans le thème. Cela est tout à fait possible parce que l’extension elle-même intègre des mécanismes d’ancrage (hook) et d’accrochage (add_action, add_filter). C’est en effet, bien meilleur que de modifier l’extension elle-même ce qui n’est pas sans risque lors de mise à jour ou de changement de thème.

Pourquoi ne pas ajouter une interface de réglages dans le tableau de bord pour ces personnalisations ? D’abord, parce qu’il serait impossible de répondre aux myriades de possibilités et ensuite parce qu’il est plus simple de modifier quelques lignes que d’en créer des milliers pour affaiblir de surcroît les performances.

A la fin de l’article se trouve la liste des ancrages tant pour les éléments de thèmes que pour les règles de modification des langages.

Les autres articles

Les autres articles

Dans l’exemple ci-dessous, on va s’intéresser à la personnalisation du template-tag : xiliml_the_other_posts () qui, inséré sous le titre d’un article, indique (s’ils existent) les liens vers les articles adaptés en d’autres langues. On va afficher les drapeaux des langues concernées et non leur nom comme par défaut.

Première étape :

Ajouter votre fonction dans le fichier functions.php et y adjoindre la fonction d’accrochage sur l’ancrage ‘xiliml_the_other_posts’ :

function my_xiliml_the_other_posts($post_ID,$before = " ", $after = ", ") {
 
/* here my code */
}
add_action('xiliml_the_other_posts','my_xiliml_the_other_posts',10,3);

En commentant par // la dernière ligne, on retrouve l’affichage de base intégrée à l’extension.

Deuxième étape :

Vérifier que dans le dossier images du thème, il y a bien le sous dossier contenant les fichiers des drapeaux.

Troisième étape :

Copier le script suivant :

103
104
105
106
107
108
109
110
$listlanguages = get_terms(TAXONAME, array('hide_empty' => false));
		foreach ($listlanguages as $language) {
			$otherpost = get_post_meta($post_ID, 'lang-'.$language->slug, true);
			if ('' != $otherpost && $language->slug != $curlang ) {
				$output .= $before."<a href='".get_permalink($otherpost)."' >".__($language->description,THEME_TEXTDOMAIN) ." <img src='".get_bloginfo('template_directory')."/images/flags/".$language->slug.".png' alt='' /></a>".$after;
			}	
		}
	if ('' != $output) {_e('This post in',THEME_TEXTDOMAIN); echo $output;}

Quelques notes sur ce script :

Après avoir collecté la liste des langues disponibles dans le site, la bouche foreach cherche s’il y a pour une langue donnée, un article lié (dont le numéro est saisi par l’auteur dans le champ personnalisé ou la boite appropriée). Si c’est le cas, le lien est créé avec l’image du drapeau. Si des liens existent, le titre est ajouté puis la liste affichée. On note que la constance THEME_TEXTDOMAIN est utilisé pour le domaine du texte qui sera traduit avec les autres textes du thème.

Le résultat final est alors celui-ci

101
102
103
104
105
106
107
108
109
110
111
112
function my_xiliml_the_other_posts($post_ID,$before = " ", $after = ", ") {
 
$listlanguages = get_terms(TAXONAME, array('hide_empty' => false));
		foreach ($listlanguages as $language) {
			$otherpost = get_post_meta($post_ID, 'lang-'.$language->slug, true);
			if ('' != $otherpost && $language->slug != $curlang ) {
				$output .= $before."<a href='".get_permalink($otherpost)."' >".__($language->description,THEME_TEXTDOMAIN) ." <img src='".get_bloginfo('template_directory')."/images/flags/".$language->slug.".png' alt='' /></a>".$after;
			}	
		}
	if ('' != $output) {_e('This post in',THEME_TEXTDOMAIN); echo $output;}
}
add_action('xiliml_the_other_posts','my_xiliml_the_other_posts',10,3);

D’autres astuces lors des prochains épisodes…

Liste des ancrages (hook) :

Voir le code php de l’extension pour plus de détails – Très utile pour les concepteurs de thème de type CMS.

1) Ancrages (hooks) pour les éléments de thème – template tags :
xili_language_list : liste des langues – décrit dans l’article en anglais.
xili_post_language : la langue de l’article – à utiliser dans la boucle.
xiliml_the_other_posts : La liste des articles liés dans d’autres langues.
xiliml_the_category : le tag qui remplace le tag the_category.
xiliml_langinsearchform : le tag qui ajoute les boutons radio pour une recherche plus ciblé – à ajouter dans le formulaire de recherche.

2) Ancrages (hooks) pour les autres fonctionnalités du coeur du plugin :
xiliml_cur_lang_head (voir ligne 310…) : Les règles qui président au changement de langue du thème.
xiliml_cat_language : Les règles qui modifient les liens de la liste des catégories dans le menu en fonction du contexte et de ce que l’on veut voir afficher pour naviguer.
… d’autres sont décrits dans le script php après la ligne 380.

Ce contenu a été publié dans Pour experts, xili-language. Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire