Sélectionner une page
Thème Divi : intégrer un shortcode à un modèle

Thème Divi : intégrer un shortcode à un modèle

Avec Divi, il est possible d’utiliser le module « Code » pour insérer des shortcodes dans un modèle. Ici, j’ai créé un shortcode pour pouvoir afficher automatiquement le titre et la description d’une catégorie.

Créer un thème enfant

On ne fait évidemment aucune modification du thème Divi puisqu’elle serait effacée en cas de mise à jour. On crée donc un thème enfant, comme indiqué dans « Créer un thème enfant pour Divi (WordPress) ».

Ce que je veux obtenir

Je veux pouvoir afficher automatiquement le titre d’une catégorie et sa description dans des modèles de catégorie.

Je veux que [[cat_display title= »yes » centrer= »yes » description= »yes »]] définisse que :

  • oui, il faut aller chercher le nom de la catégorie et l’afficher ;
  • oui, il faut centrer le titre sur la page
  • oui, il faut aller chercher la description de la catégorie et l’afficher.

Le code

Dans functions.php du thème enfant, j’ai ajouté le code suivant :

/***** My shortcode with parameters for category title and description ***********/
// 	[cat_display title="yes" centrer="yes" description="yes"] will display both category and description
// source https://developer.wordpress.org/plugins/shortcodes/shortcodes-with-parameters/

function cdc_cat_title_desc_shortcode( $atts = [], $content = null ) {
    // normalize attribute keys, lowercase
    $atts = array_change_key_case((array)$atts, CASE_LOWER);
 
    // override default attributes with user attributes
    $wporg_atts = shortcode_atts( [
        'title' 		=> 'yes',
	'centrer'		=> 'yes',
	'description' 	=> 'yes',
    ], $atts );
 
	// start output
    $o = '';
 
    // start box
    $o .= '<header class="archive-header">';
 
    // title
	if ( "yes" == $wporg_atts['title'] ) {
			
			if ( "yes" == $wporg_atts['centrer'] ) {
				$o .= '<h1 class="entry-title main_title" style="text-align:center;">' . single_cat_title( '', false ) . "</h1>";
			} else {
				$o .= '<h1 class="entry-title main_title">' . single_cat_title( '', false ) . "</h1>";
			}
	} else {
		$o .="";
	}

	if ( "yes" == $wporg_atts['description'] ) {
		    $o .= '<div class="archive-meta">' . category_description() . "</div>";
	} else {
		$o .="";
	}
 
    // end box
    $o .= '</header>';
 
    // return output
    return $o;
	

}
 
add_shortcode('cat_display', 'cdc_cat_title_desc_shortcode');

La dernière ligne,add_shortcode(‘cat_display’, ‘cdc_cat_title_desc_shortcode’); , définit que lorsque le shortcode [[cat_display]] est repéré, il faut exécuter la fonction cdc_cat_title_desc_shortcode.

Dans cette fonction,

  • Je précise que je me suis inspirée de cette page pour créer la fonction : Shortcodes with Parameters ;
  • $atts = array_change_key_case((array)$atts, CASE_LOWER);  évite les anomalies liées à des « yes » contenant des majuscules ;
  • Les lignes $wporg_atts = shortcode_atts( [   … ], $atts );  indiquent les différents paramètres applicables et leurs valeurs par défaut (yes) ;
  • $o contient le html qui devra être inséré dans le modèle. Ici il prendra une valeur différente selon la valeur des paramètres.

Maintenant, je peux utiliser ce shortcode comme je le souhaite, et en particulier dans un module « code » de Divi.

L’utilisation de ce shortcode

J’explique comment l’utiliser dans l’article sur les modèles Divi pour l’affichage de pages de catégorie : Thème Divi : créer des modèles (layouts) spécifiques pour des catégories.

 

 

 

Que faire si un modèle (ou un module) Divi ne se charge pas ?

Que faire si un modèle (ou un module) Divi ne se charge pas ?

Il arrive que le modèle ou qu’un module Divi ne se charge pas. On est alors bloqué sur une page avec un symbole indiquant qu’elle se charge. Dans ce cas :

Aller dans le menu « tableau de bord » de WordPress puis cliquer tout en haut sur le menu « supprimer le cache »

WordPress : supprimer le cache

WordPress : supprimer le cache

Si même ça ne fonctionne pas, aller dans Apparence >> Thèmes, activer le thème parent (Divi), vérifier que le modèle se charge puis retourner dans Apparence >> Thèmes, activer le thème enfant de nouveau.

Et maintenant, les modèles ou modules se chargent de nouveau.

Si ça ne suffit pas, suivre les instructions de l’article « How to fix Divi Builder modules not opening/loading or Timeout Issue« .

Un éclairage LED mixte

Un éclairage LED mixte

Dans l’article prototype d’éclairage LED mixte j’ai expliqué la construction à titre d’essai d’une lampe mêlant un ruban LED pour diffuser un éclairage doux et deux spots à LED également pour éclairer sur une surface restreinte et servir de liseuses. Ici je présente le montage de la version définitive.

Ma liste de courses

J’ai réutilisé tout ce que j’avais acheté pour réaliser le prototype. En plus, j’ai acheté :

  • une planche de pin de 200 x 40 mm, épaisseur 18 mm (7.95 € chez Leroy Merlin) ;
  • 6 charnières à visser 77×33 mm (ici chez Leroy Merlin, à 6.80€ le lot) ;
  • des vis à double filets, diamètre 6mm, longueur 60 mm (ici chez Castorama, à 3.75 € le sachet de 10) et écrous et rondelles de diamètre 6 correspondantes.

En plus j’ai utilisé un tube plastique que j’avais (récupération d’une ancienne lampe à led qui était tombée en panne), deux coudes males 15×21, des vis diverses et un peu de tissu, ainsi que des chevilles de diamètre 8 pour fixer la lampe.

L’adaptation du circuit électrique de la pièce

Dans la pièce (une chambre) où va cette lampe, il y avait une arrivée électrique au mur actionnée par deux interrupteurs va et vient. Pour que le nouvel éclairage fonctionne, il fallait que l’arrivée électrique contienne :

  • un + (déjà présent) ;
  • un – actionné par le va-et-vient (déjà présent) ;
  • un – « général », alimenté en permanence, à installer.

Voici le schéma électrique de la nouvelle installation :

Schéma électrique de l'alimentation murale

Schéma électrique de l’alimentation murale, avec va et vient

Et l’essai réalisé avec deux ampoules, connectées toutes deux au +, avec l’une connecté au – général et l’autre au – des va et vients indique que tout va bien :

Essai de l'alimentation murale

Le schéma électrique de la lampe

La lampe contient :

  • un ruban led, alimenté par un transformateur, lui même alimenté par le – relié au va et vient et le +.
  • deux spots, chacun actionné par un interrupteur spécifique, les deux interrupteurs étant reliés au + et au – général.

Voici le schéma électrique, et des photos des différents branchements :

Schéma électrique du coffret d'éclairage

Schéma électrique du coffret d’éclairage

 

câblage du transformateur

câblage du transformateur (remarquer quel fil est noir et blanc)

Câblage des interrupteurs des spots

Câblage des interrupteurs des spots

Le câblage terminé

Le câblage terminé, il ne reste plus qu’à fixer les câbles aux planches

Branchement du ruban led

Branchement du ruban led

Le montage du coffret d’éclairage

Schéma de montage du coffret

Schéma de montage du coffret

 

Les planches (4) et (5) sont solidaires et sont fixées à la planche (3) par des charnières. Ainsi le coffret s’ouvre pour pouvoir être fixé au mur et relié aux arrivées électriques.

Les deux joues (6) sont vissées dans les pièces (1), (2) et (3). La pièce (2) est vissée sur (1).

Dans ma planche de pin de 2 m par 40 cm, j’ai réalisé les découpes suivantes :

  • découpe à 1564 mm de long de la tablette ;
  • Dans la planche de 1564 x 400, j’ai découpé les pièces (1) à (5) ;
  • Dans ce qui restait, j’ai découpé les deux joues (6).

Les dimensions des 7 planches découpées sont :

  • (1) 1564 x 48 mm (ce qui reste des 400 mm après avoir découpé (2) à (5)
  • (2) 1564 x  40 mm (on doit avoir (2)+(5) = 104, je laisse un jeu de 1 mm)
  • (3) 1564 x 105 mm
  • (4) 1564 x 142 mm (on doit avoir (4) + 2 épaisseurs – 18 mm) = 178 mm)
  • (5) 1564 x 65 mm
  • (6) 2 morceaux de 178 x 105 mm

Dans les faits, si vous regardez bien mes photos, vous verrez que mes découpes n’étaient pas très justes, et des perçages défigurent un peu,  c’est pourquoi j’ai habillé la lampe d’un tissu qui cache les défauts…

La fixation au mur

J’ai percé le mur en diamètre 8 mm pour y insérer des chevilles. J’ai ensuite placé les vis à double filet dans ces chevilles (en mettant temporairement deux écrous serrés l’un contre l’autre pour pouvoir utiliser une clé) de telle sorte que le filet « bois » soit dans la cheville et le filet « métal » sorte du mur.

La planche (1) contient 4 trous de diamètre 7 mm dans lequel les vis de diamètre 6 fixées au mur peuvent s’insérer. Il suffit ensuite de placer une rondelle et un écrou de 6 mm sur chaque vis pour fixer le coffre d’éclairage.

Ensuite, il suffit de connecter les 3 fils d’alimentation du mur dans les dominos prévus.

L'éclairage fini

 Et maintenant ?

Je suis contente d’avoir réalisé ce coffret, même si mes découpes sont imparfaites. J’ai appris de l’électricité, je sais maintenant utiliser un ruban led et j’ai fait un éclairage très fonctionnel pour un coût modéré.

Menus WordPress : comment faire un lien vers un site externe correctement ?

Menus WordPress : comment faire un lien vers un site externe correctement ?

On peut définir des liens personnalisés dans les menus WordPress. Mais le visiteur qui clique sur l’élement de menu se trouve brutalement dans un autre site, sans en avoir été informé. Nous allons donc voir comment faire pour que le lien s’ouvre dans un autre onglet et que l’utilisateur en soit averti (attributs de titre) ?

Sauter d'un site à l'autre via le menu WordPress

WebDonut / Pixabay

Afin d’éviter que l’internaute se retrouve subitement dans un autre site, je me propose de régler les liens vers des url externes de telle sorte que :

  1. l’internaute ouvre un autre onglet lorsqu’il clique sur le menu (le site sur lequel il était reste ouvert dans l’onglet initial).
  2. L’internaute voit apparaître une information lui indiquant que le lien va s’ouvrir dans un autre onglet.

Les options de menu WordPress par défaut

Par défaut, voici ce que l’on voit lorsque l’on est administrateur dans un élément de menu WordPress :

L'affichage par défaut pour les réglages de menu WordPress

Et l’internaute qui place sa souris sur un lien externe (ici « Ma chaîne Vidéos ») n’a aucune idée qu’il va être envoyé dans un site externe.

L'internaute qui place sa souris sur cet élément de menu ne sait pas qu'il sera dirigé vers un site externe

Activer d’autres options

Dans la page de réglage des menus de WordPress (Apparence >> Menus), il y a un tout petit bouton « options de l’écran » tout en haut à droite. Si on clique dessus, on voit apparaître différentes options :

Réglages de menu WordPress : les options d'affichage

Je clique sur les cases à cocher « cible du lien » et « Description »

Maintenant, je peux cocher « ouvrir le lien dans un nouvel onglet » et « attribut de titre » (qui s’affichera lorsque l’internaute place sa souris sur le lien).

Réglages de menu WordPress avec d'autres options d'affichage

Après sauvegarde du menu, l’internaute voit apparaître un « popup » qui l’informe qu’il sera envoyé vers un nouvel onglet et s’il clique sur le lien, un nouvel onglet s’ouvre dans son navigateur.

Menu avec popup vu par l'internaute

Une icone pour être encore plus explicite

Ce serait encore plus clair si le lien du menu affichait en permanence l’information que le lien est externe. On peut le faire en ajoutant une icone au titre de l’élément de menu :

Réglages de menu WordPress : un titre de menu avec une icone Dashicons

j’ai ajouté « <span class= »dashicons dashicons-external »></span>  » au titre.

Et maintenant l’internaute voit :

Menu avec icone et popup vu par l'internaute

Ajuster le style de l’icone et du popup

J’ai donné une classe CSS à l’élément de menu « lien-ext » (on peut le faire si on a coché « classe CSS » dans les options d’affichage de la page de réglage du menu.

Réglages de menu WordPress : un titre de menu avec classe CSS spécifique

Réglages de menu WordPress : un titre de menu avec classe CSS spécifique

On peut modifier le fichier style.css (de notre thème enfant) et définir un style différent pour l’icone du menu et le popup :

/* --- Menus avec classe CSS "lien-ext" : icone et popup --- */
.lien-ext .dashicons.dashicons-external {
	vertical-align: bottom !important;
}

.lien-ext a[title]:hover::after {
	content: attr(title);
	position: absolute;
	left: 0;
	top: -40%;
	white-space: nowrap;
	padding: 0.5rem;
	border: none;
	background-color: white;
	font-style: italic;
	font-weight: 400;
	font-size: 90%;
	text-align: right;
}

Maintenant l’internaute voit l’icone bien alignée par rapport au titre du menu et lorsqu’il pose sa souris sur le titre, il voit (deux…) popup l’informant qu’il sera envoyé dans un autre onglet.

Menu avec popup et style CSS modifié

Et maintenant ?

A vous de jouer !

Thème Divi : ajouter un fil d’Ariane (breadcrumbs)

Thème Divi : ajouter un fil d’Ariane (breadcrumbs)

Le thème Divi, objet des articles de cette série , ne permet pas d’ajouter un « fil d’Ariane » (breadcrumbs en anglais) pour permettre à tous les internautes de savoir où ils se situent dans un site web. J’explique ici comment utiliser une fonctionnalité de l’extension Yoast SEO pour afficher un fil d’Ariane sur les pages (toutes ou une partie) d’un site.

Sloopng / Pixabay

Pourquoi mettre un « fil d’Ariane » ?

Imaginez que vous visitez un nouveau site. Au gré des liens que vous suivez, vous pouvez vite être complètement perdu. Dans ce cas, vous pouvez parfois être sauvés par les menus de navigation, s’ils vous paraissent cohérents.

Dans d’autres cas, vous remarquerez le fil d’Ariane (ou breadcrumbs) qui vous permettra de comprendre la position de la page actuelle dans la hiérarchie du site. Evidemment, cela ne vous aidera que si la structuration du site vous paraît également cohérente.

En l’absence d’un fil d’Ariane, il est fort probable que vous quitterez ce site en pensant que son auteur est vraiment très désorganisé !

En plus, le fil d’Ariane peut aussi permettre aux robots des moteurs de recherche de mieux comprendre la structure d’un site, et donc de mieux l’indexer.

Comment intégrer un fil d’Ariane lorsque le thème ne le prévoit pas ?

Ma solution utilise l’extension Yoast SEO, mais vous pouvez aussi utiliser Breadcrumb NavXT, selon cet article (en anglais) qui m’a servi de référence.

Régler l’extension Yoast SEO

Dans le tableau de bord WordPress, menu SEO, menu Avancé, onglet « Fils d’Ariane : activer le fil d’Ariane. De nombreux paramètres peuvent alors être réglés :

Yoast SEO : réglage du fil d'Ariane

Sur cette partie des réglages, la seule chose que j’ai modifié, c’est le texte d’ancrage pour la page d’accueil. A la place de « Accueil », j’ai placé : <span class= »dashicons dashicons-admin-home »> </span>. Maintenant mon fil d’Ariane démarre par une sympathique icone de maison et ça me semble beaucoup plus facile de comprendre à quoi sert cette ligne.

Cocher « Afficher la page de blog » est une astuce de Yoast SEO pour bien montrer la position du blog dans la structure générale du site. Je l’ai laissé comme c’est proposé par défaut.

Dans la deuxième partie des réglages de Yoast SEO, on trouve deux éléments :

  • Taxonomie à afficher dans le fil d’Ariane pour les types de contenu : pour les articles, j’ai indiqué « catégorie ». Mon fil d’Ariane devient très long (ici j’ai tronqué le titre de l’article) :

Fil d'Ariane avec catégorie

  • Type de contenu d’archive à afficher dans le fil d’Ariane pour les taxonomies : je n’ai pas essayé de régler autrement (pas sur « aucun ») car je n’utilise pas les taxonomies indiquées.

Une fois ces réglages effectués le thème Divi n’affiche pas les fils d’Ariane ! Il faut maintenant aller modifier le thème enfant.

Modifier le thème enfant pour intégrer le fil d’Ariane

Mon site WordPress utilise un thème enfant de Divi, thème enfant que j’ai créé (j’explique ici comment). Evidemment, il ne faut en aucun cas faire les modifications qui suivent directement dans un thème parent !

Comme je veux que le fil d’Ariane figure sur l’ensemble des pages du site, j’ai copié le fichier header.php  de  /wp-content/themes/Divi  (thème parent) et je le place dans /wp-content/themes/clea-divi-child  (mon thème enfant).

Tout en bas de header.php  du thème enfant, en dessous de la ligne <div id= »et-main-area »> , j’ai ajouté le code suivant, comme indiqué dans  cet article (en anglais).

<!-- #main-header -->
<?php if(function_exists('yoast_breadcrumb') && !is_front_page()) {
	echo '<div class="container">';
	yoast_breadcrumb('<p id="breadcrumbs">','</p>');
	echo '</div>';
} ?>

Maintenant le fil d’Ariane apparaît sur toutes les pages. Je fais quelques ajustements de style en ajoutant dans le fichier style.css  du thème enfant les éléments suivants :

/* --- Yoast breadcrumbs inserted in header.php --- */
 #breadcrumbs{ 
	width: 100%; 
	margin-top: 1rem ;
	font-size: 0.9rem;
}

Et voilà, j’ai terminé.

A vous maintenant !