Gérer les redirections d’un site WordPress

Gérer les redirections d’un site WordPress

Durant la vie d’un site web, on est amené à modifier des adresses (url) web et il faut aider les internautes (et les moteurs de recherche) à s’y retrouver. C’est pour cela que l’on a inventé les redirections 301 (permanentes) voire 302 (temporaires). Nous allons voir ici comment utiliser l’extension Redirection, de John Godley.

Cet article a été mis à jour le 10 novembre 2017.

Redirections SEO !

geralt / Pixabay

Pourquoi faire des redirections ?

Les moteurs de recherche passent leur temps à indexer des contenus, des sites font des liens vers des contenus, des internautes copient et collent une adresse web… Si vous supprimez ou modifiez une url (d’un article, d’une page, d’une catégorie, …), tous ces liens archivés par des tiers vont aboutir à une page en « erreur 404 », un code HTTP qui indique que l’adresse recherchée n’existe pas.

Afin de simplifier la vie des internautes, mais aussi de conserver un bon référencement dans les moteurs de recherche, il faut indiquer quelle est l’adresse de remplacement de celle qui ne fonctionne plus. C’est ce qu’on appelle une redirection. Et elle peut être permanente (301), ou temporaire (302).

Comment faire des redirections ?

On peut les écrire directement dans le fichier .htaccess de notre site WordPress mais ça présente des inconvénients :

  • il faut connaître la syntaxe précise, ce qui n’est pas toujours simple ;
  • La lisibilité n’est pas très bonne et on risque des erreurs ;
  • Mais surtout, si on déplace le site, on risque d’oublier de déplacer aussi les redirections dans le .htaccess créé dans le nouvel hébergement.

C’est à cause de la dernière raison que j’ai décidé d’utiliser une extension WordPress pour les redirections. Le gros avantage aussi est qu’un administrateur compétent, mais sans expérience de code, peut aussi définir des redirections.

Utiliser l’extension Redirection, de John Godley

L’extension Redirection a de très bons avis, est mise à jour régulièrement et est utilisée par des centaines de milliers de sites.

Je l’ai donc installée et activée sur un site récemment modifié lourdement.

La notion de module

L’extension peut utiliser 3 « modules » pour réaliser les redirections :

  • module « WordPress », qui a l’avantage d’être simple (pas besoin d’un accès à .htaccess) mais sollicite plus les ressources du site ;
  • module « Apache », qui est plus rapide. Mais attention, elle ne fonctionne pas toujours (voir plus bas) ;
  • module « Nginx » – je n’ai pas cherché à l’utiliser, je ne crois pas que mon serveur utilise Nginx.

La page Redirection, du développeur de l’extension (en anglais) explique plus en détail ce que sont ces modules.

J’ai créé deux groupes de redirection (onglet Groups du menu « outils » >> « Redirections »), l’un, intitulé « redirections WP », est associé au module WordPress, l’autre, « Redirection Apache », est associé au module Apache.

Créer des redirection (quel que soit le groupe)

On peut utiliser un fichier CSV ou entrer chaque redirection à la main. Dans tous les cas, une syntaxe précise est à adopter.

La syntaxe à adopter

Imaginons que vous souhaitez rediriger https://mon-site/test-old  vers https://mon-site/test-new .

Le problème, c’est que si l’internaute tape https://mon-site/test-old/ , avec un « / » final, la redirection ne se fera que si vous avez bien défini l’url source.

Il faudra écrire que la source est /test-old/? , avec « /? » à la fin et cocher la case « Regex » (Regular Expression). Cette expression dit qu’il faut rediriger qu’il y ait le / à la fin ou non.

Avec un fichier CSV

Pour créer les redirections, j’ai importé un fichier CSV (créé avec Libre Office Calc, car Microsoft Excel gère très mal l’encodage et les caractères de séparation des CSV). Ce fichier CSV contenait des éléments comme suit (elles fonctionnent mais évidemment je ne les ai créées que pour l’exemple) :

source target regex type code match hits title
/test-old/? /test-new 1 url 301 url 0
/old-page/? https://autre-site.com/new-page 1 url 301 url 0

J’ai défini le groupe pour l’ensemble des redirections du fichier CSV durant l’importation.

A la main

La deuxième redirection s’affiche comme ça si on la saisit à la main :

Régler une redirection 301 avec l'extension Redirection

Régler une redirection 301 avec l’extension Redirection

 

Redirection avec le module WordPress

Ca fonctionne parfaitement. Toutes mes redirections utilisant le module WordPress se font à la perfection.

Redirection avec le module Apache

Dans le menu WordPress « outils » >> « Redirections », on voit un onglet « options ».

Il faut y définir le chemin vers le fichier .htaccess de l’hébergement. Pour le connaître, je suis allée regarder dans Réglages / WP Super Cache, onglet avancé et « Cache Location » est défini comme : /home/clients/2453337d17…073506d/site/wp-content/cache/

Donc dans Outils / redirection, onglet options, je définis Apache Module comme : /home/clients/2453337d17…073506d/site/.htaccess.

J’ai laissé sur « default server » car je préfère que ce soit Infomaniak qui gère l’absence ou la présence de www devant le nom de domaine.

J’ai ensuite créé des redirections exactement comme précédemment. Mon fichier .htaccess est effectivement modifié si je crée une redirection dans le groupe « Redirection Apache » entre /test/ et /cat/bla-bla :

<IfModule mod_rewrite.c>
RewriteRule ^test/$ /cat/bla-bla/ [R=301,L]
</IfModule>

Mais la redirection ne fonctionne pas. L’url monsite/test n’est pas dirigée vers monsite/cat/bla-bla….

J’ai cherché comment régler le module Apache, mais les onglets que je vois sont « Redirects | Groups | Log | 404s | Import/Export | Options | Support ». Je ne peux pas accéder à un onglet « Module » qui me permettrait de régler Apache…

J’ai déposé une demande d’aide sur le support de l’extension et j’ai reçu une réponse 2 jours après ma demande. Voici la solution, en attendant une mise à jour de l’extension.

J’utilise l’extension WP Super Cache pour accélerer mes sites. Elle écrit également des informations dans le fichier .htaccess.

John Godley, l’auteur de l’extension Redirection m’a proposé de corriger à la main le fichier .htaccess et d’y  déplacer les éléments relatifs à la redirection avant les éléments liés à WP Super Cache.

Donc dans le fichier .htaccess, il faut déplacer les éléments

# Created by Redirection

CODE

# End of Redirection

avant les éléments

# BEGIN WPSuperCache 

Code

# END WPSuperCache

Et maintenant ça fonctionne correctement !

Et maintenant ?

Les redirections fonctionnent correctement.

Une extension pour ajouter des fonctionnalités au thème Divi (WordPress)

Une extension pour ajouter des fonctionnalités au thème Divi (WordPress)

Le thème Divi est très bien, mais il lui manque quelques fonctionnalités pratiques. J’ai créé précédemment un thème enfant pour Divi afin de générer différemment les pages de catégorie. Mais pour ajouter d’autres fonctionnalités, il était préférable de créer une extension, afin de ne pas mélanger les choses. Je commente ici l’extension créée.

Ce que je voulais obtenir

  • le style des méta-données de catégorie dans les pages de catégorie doivent être de la couleur des liens du site. Plutôt que de modifier à la main la feuille de style du thème enfant, je voulais trouver automatiquement la couleur définie dans Divi pour les liens et l’appliquer à ces méta-données par  le biais d’un style défini en code (inline style).
  • Lorsqu’on écrit un nouvel article, ou n’importe quel autre type de contenu, avec l’éditeur classique, on dispose d’un moyen de changer la couleur du texte. Mais les couleurs proposées ne sont pas celles du site. Je voulais donc trouver automatiquement la palette par défaut du site (définie dans les options Divi, onglet général) et utiliser cette palette comme couleurs possibles pour le texte.
  • Je voulais aussi supprimer la possibilité d’insérer manuellement un titre H1 dans un contenu. Les titres H1 sont réservés aux titres de pages web et sont générés automatiquement par le thème. Il ne doit pas y avoir de deuxième titre H1 dans une page car ça « perturbe » les moteurs de recherche.

L’extension finie

L’extension (sur GitHub, ou la version 1.0 – zip – commentée ici, en téléchargement : Extension « Divi Add functions » (zip) ) peut être installée sur un site WordPress par le biais d’ajout d’extension. Il suffit ensuite de l’activer, il n’y a pas de réglage à réaliser.

Je suis partie d’une extension réalisée par Divi Space, ici sur GitHub et je l’ai modifiée de manière extensive.

Trouver la couleur appliquée aux liens

Dans le répertoire /wp-content/plugins/clea-divi-add-functions/includes , deux fichiers (cdaf-enqueues.php  et cdaf-editor.php ) contiennent les lignes :

$accent_color = esc_html( et_get_option( 'accent_color', '#2ea3f2' ) );
$link_color = et_get_option( 'link_color', $accent_color );

$link_color prend la valeur définie dans le paramètre « COULEUR DU LIEN DU CORPS » de la personnalisation du thème Divi (ou du thème enfant), onglet « Paramètres Généraux » >> « Typographie ». Je ne suis pas certaine de ce à quoi correspond accent_color…

Définir un style en ligne (inline style)

C’est en regardant le code de l’extension réalisée par Divi Space, ici sur GitHub que j’ai compris comment on fait ça. Le fichier contient :

add_action( 'wp_enqueue_scripts', 'cdaf_divi_enqueue_scripts' );

function cdaf_divi_enqueue_scripts() {
	
	if ( wp_basename( get_bloginfo( 'template_directory' ) ) == 'Divi' ) {
		wp_enqueue_style( 'cdaf-stylesheet', CDAF_DIR_URL . 'css/clea-divi-add-functions.css' );
		
		$accent_color = esc_html( et_get_option( 'accent_color', '#2ea3f2' ) );
		$link_color = et_get_option( 'link_color', $accent_color );
		
		// there must be an extra } at the end of the custom_css string...
		$custom_css = "#left-area .post-meta a[rel='category tag'] {color: {$link_color};}}";
		wp_add_inline_style( 'cdaf-stylesheet', $custom_css );	
	}
}

La fonction exécute les instructions suivantes :

  • si (et seulement si) le thème Divi (ou un thème enfant de Divi) est utilisé, alors :
    1. charge la feuille de style css/clea-divi-add-functions.css (qui ne contient rien actuellement) – cette instruction ne sert à rien en l’état actuel de l’extension.
    2. Trouve quel est le code de la couleur définie pour les liens
    3. ajoute un style « inline » qui contient le texte défini dans la variable $custom_css . Il faut bien noter qu’il y a deux } à la fin de ce texte.

Et maintenant, si je regarde dans le <head> d’une page du site (par exemple https://parcours-performance.com), je trouve :

<link rel='stylesheet' id='cdaf-stylesheet-css' href='https://parcours-performance.com/wp-content/plugins/clea-divi-add-functions/css/clea-divi-add-functions.css?ver=4.8.2' type='text/css' media='all'/>
<style id='cdaf-stylesheet-inline-css' type='text/css'>
#left-area .post-meta a[rel='category tag'] {color: #843bbb;}}
</style>

La feuille de style est chargée, et un style « inline » est défini pour #left-area .post-meta a[rel=’category tag’].

Trouver la palette de couleurs définie par l’utilisateur de Divi

Le fichier cdaf-utilities.php  contient la fonction suivante :

function cdaf_read_color_palette() {
	
	$cdaf_color_palette = et_get_option( 'divi_color_palette', false ) ; 
	$return = explode("|", $cdaf_color_palette);
	return $return ;
}

Cette fonction va chercher la valeur de ‘divi_color_palette’ et me renvoie une chaîne de caractères (string) avec les codes couleurs séparés par |. Avec explode, je place dans $return  un tableau (array) contenant les codes hexadécimaux des couleurs.

Modifier les couleurs proposées dans l’éditeur WordPress

L'éditeur WordPress : les couleurs de texte par défautA l’origine l’éditeur WordPress par défaut propose un ensemble de couleurs, plus des cases « personnalisées » que l’on ne peut pas modifier.

Le fichier cdaf-editor.php  contient le code correspondant à cette fonctionnalité. Dedans, deux fonctions assurent la modification des couleurs proposées par l’éditeur WordPress.

  • La fonction cdaf_editor_colors( $init ) assure le passage de l’état initial (image 1) à l’état 2 (image 2) dans lequel les couleurs par défaut sont remplacées par les couleurs du site.
  • La fonction cdaf_tiny_mce_remove_custom_colors( $plugins ) s’occupe d’enlever les cases blanches « personnalisée » qui ne fonctionnent pas. Je l’ai trouvée sur StackExchange. Je n’ai pas cherché à comprendre comment elle marche.

Intéressons nous à la fonction  cdaf_editor_colors( $init ) , que j’ai eu bien du mal à créer, même si je suis partie d’une solution initiale qui fonctionnait (disponible ici). Elle contient les éléments suivants (que j’ai divisé en quatre parties) :

function cdaf_editor_colors($init) {

	/*********** PARTIE 1 **************************
	***********************************************/
	$cdaf_colors = cdaf_read_color_palette() ; // an array of hex codes beginning with #
	$index = 0 ;
	$default_colors =  array();
	
	// what is the link color for text ?
	$accent_color = esc_html( et_get_option( 'accent_color', '#2ea3f2' ) );
	$link_color = et_get_option( 'link_color', $accent_color );
	// remove # in color code
	$link_color = ltrim( $link_color, "#" ) ;
	// met en majuscule le code HEX
	$link_color = strtoupper( $link_color );		

	/*********** PARTIE 2 **************************
	***********************************************/
	// transformer en array avec code hex sans # et nom sous forme "color n"
	foreach ( $cdaf_colors as $color ) {

		// remove # in color code
		$color = ltrim( $color, "#" ) ;
		// met en majuscule le code HEX
		$color = strtoupper( $color );	

		if ( !( $link_color == $color ) ) {

			// the text color palette should not include the link color
			$default_colors[] = array( $color, 'color ' . $index  )  ;
			
			$index++ ; 			
		
		}
					
	}

	// the only way I found to have a string which works....
	// the string shoulr be like this : '"423432","color 0","FFFFFF","color 1","4C858D","color 2","ED693B","color 3","F28A2B","color 4","FAC079","color 5","F6DB6B","color 6","A60F65","color 7"' 
	$custom_colours = wp_json_encode( $default_colors ) ;
	$replace = array( "[", "]") ; // we don't want these in the final string
	$custom_colours = str_replace($replace, "", $custom_colours );

	/*********** PARTIE 3 **************************
	***********************************************/
    // build colour grid default+custom colors
    $init['textcolor_map'] = '['.$custom_colours.']';

    // change the number of rows in the grid if the number of colors changes
    // 8 swatches per row
    $init['textcolor_rows'] = 1;

	// debug will echo in the footer of the editor ! 
	//echo "<p>" . $custom_colours . "</p>" ;

    return $init;
}
	/*********** PARTIE 4 **************************
	***********************************************/
add_filter('tiny_mce_before_init', 'cdaf_editor_colors');

Partie 1 : Définir les variables qui vont nous intéresser

Ces variables sont la palette par défaut (celle que l’administrateur a défini dans les options Divi) ainsi que la couleur des liens définie dans la personnalisation du thème. Avec la palette par défaut, j’ai la liste des codes couleur que je voudrais intégrer dans l’éditeur WordPress. Mais on ne veut pas que la couleur des liens soit accessible à un auteur de contenu. L’internaute ne comprendrait pas que certains textes d’une couleur soient cliquables quand d’autres ne le sont pas. Il faut donc que je sache quelle est cette couleur de lien.

J’obtiens deux variables qui contiennent les données définies par l’administrateur du site :

  • $link_color , qui contient un code à 6 chiffres ou lettres A à F en majuscules. Le # du code a été enlevé.
  • $default_colors , un tableau (array) tel que défini précédemment.

Partie 2 : transformer l’array de couleurs

Je dois obtenir une chaîne de caractère au format suivant :

'"423432","color 0","FFFFFF","color 1","4C858D","color 2","ED693B","color 3","F28A2B","color 4","FAC079","color 5","F6DB6B","color 6","A60F65","color 7"'

Je pars d’un tableau (array) qui contient simplement les codes Hexadécimaux des couleurs sous la forme #AABBCC. Pour aboutir à la chaîne de caractère ci-dessus, il faut :

  • lire chaque élément du tableau (array), avec foreach ( $cdaf_colors as $color )
  • pour chaque valeur ($color) :
    • enlèver le # devant (ltrim( $color, « # » ) ) et le mettre en majuscule (strtoupper( $color ) ) ;
    • si elle est égale à la couleur utilisée pour les liens je ne l’utilise pas ;
    • sinon, je la place dans un nouveau tableau, sous la forme (code Hex, nom couleur).

A la sortie de cette boucle, $default_colors contient toutes les couleurs à utiliser, avec leur nom (sous la forme « couleur n »). Mais ce n’est toujours pas une chaîne de caractères…

J’ai passé beaucoup, beaucoup de temps à bloquer là dessus. Tout le monde saisit à la main les couleurs à intégrer dans l’éditeur, sans profiter de l’automatisation possible. Mais j’ai trouvé !!!

  • avec wp_json_encode( $default_colors ) , on transforme le tableau (array) en une chaîne de caractères ;
  • avec str_replace($replace, «  », $custom_colours ) , on enlève tous les caractères dont on ne veut pas, définis dans $replace = array( « [« , « ] ») .

Partie 3 indiquer à l’éditeur les nouvelles couleurs de texte

Là je me suis bornée à recopier ce qui était écrit dans le code proposé sur StackExchange.

La seule difficulté (importante) était de fournir une chaîne de caractères au bon format.

Partie 4 dire à WordPress de charger la fonction

Avec add_filter(‘tiny_mce_before_init’, ‘cdaf_editor_colors’); , on dit qu’au moment où l’éditeur s’ouvre, il doit exécuter la fonction cdaf_editor_colors.

A ce stade, lorsqu’on utilise l’éditeur, il nous propose les couleurs définies dans les options de Divi, moins celle qui est dédiée aux liens :

L'éditeur WordPress : des couleurs de texte personnalisées V1

Je n’aime pas du tout les carrés « personnalisée » en dessous. Je n’y faisais pas attention avant, mais là, ça me gène. Alors j’ai ajouté une autre fonction, trouvée dans une autre discussion sur StackExchange :

add_filter( 'tiny_mce_plugins', 'cdaf_tiny_mce_remove_custom_colors' );

function cdaf_tiny_mce_remove_custom_colors( $plugins ) {       

    foreach ( $plugins as $key => $plugin_name ) {
        if ( 'colorpicker' === $plugin_name ) {
            unset( $plugins[ $key ] );
            return $plugins;            
        }
    }

    return $plugins;            
}

Et maintenant, les choix de couleur de texte sont présentés de manière « propre » !

L'éditeur WordPress : des couleurs de texte personnalisées V2

Supprimer les titres H1 des styles proposés par l’éditeur WordPress

Je me suis bornée à reprendre le code proposé dans ce gist, sur GitHub.

function cdaf_remove_h1_from_editor( $settings ) {

    $settings['block_formats'] = 'Paragraph=p;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre;';
    return $settings;
}

add_filter('tiny_mce_before_init', 'cdaf_remove_h1_from_editor');

Avant, l’éditeur proposait aux auteurs des style Titre 1, maintenant il n’est plus possible de commettre l’erreur de donner un tel style à du texte.

L'éditeur WordPress : les styles par défaut   L'éditeur WordPress : pas de H1 dans les styles

Et maintenant ?

Si vous voulez télécharger l’extension complète : Extension « Divi Add functions » (zip). Je la ferai certainement évoluer ultérieurement. Mais pour l’instant elle répond à mes besoins.

Thème Divi : créer des modèles (layouts) spécifiques pour des catégories

Thème Divi : créer des modèles (layouts) spécifiques pour des catégories

Avec le thème Divi, objet des articles de cette série , les pages de catégorie n’intègrent pas automatiquement les titres et descriptions de catégorie. J’ai exposé précédemment comment les intégrer automatiquement avec un modèle ‘category.php’. Mais il y a une autre solution, nettement plus pratique puisqu’elle intègre le générateur DIVI.

Cette solution vient de l’article « Personnaliser facilement votre page « Catégorie »« . Je l’ai appliquée comme telle. La seule différence de mon fichier category.php » est qu’il intègre aussi les modifications vues dans l’article Pages catégorie du thème Divi : ajouter titre et description.

<?php get_header(); ?>

<?php
// source https://www.tips02.fr/backstage/personnaliser-facilement-votre-page-categorie-customize-easily-you-category-page/

$cat = get_category( get_query_var( 'cat' ) );
$cat_slug = $cat->slug;
$the_cat_id = $cat->cat_ID;

$locale =  substr( get_locale(), 0, 2 );

switch ($locale) {
	case 'en':
		$my_cat = 'category';
		break;
	case 'it': case 'es':
		$my_cat = 'categoria';
		break;
	case 'de':
		$my_cat = 'kategorie';
		break;
	default:
		$my_cat = 'categorie';
}

$html = '';

	$args=array(
		'post_type' 		=> 'et_pb_layout',
		'post_name__in' 	=> array($my_cat . '-' . $cat_slug, $my_cat),
		'posts_per_page' 	=> 1,
		'orderby'			=> 'name',
		'order'				=> 'DESC',
	);
	$query = new WP_Query($args);
	if ($query->have_posts()) :
		//As I want to be sure that no category have been set (to avoid errors), I assure myself to "remove" it :).
		$html = str_replace('include_categories', 'unknown', $query->posts[0]->post_content);
		// Then I define it easily with the current category id :)...
		$html = str_replace('
; et_divi_post_format_content(); if ( ! in_array( $post_format, array( 'link', 'audio', 'quote' ) ) ) { if ( 'video' === $post_format && false !== ( $first_video = et_get_first_video() ) ) : printf( '<div class="et_main_video_container"> %1$s </div>', $first_video ); elseif ( ! in_array( $post_format, array( 'gallery' ) ) && 'on' === et_get_option( 'divi_thumbnails_index', 'on' ) && '' !== $thumb ) : ?> <a href="<?php the_permalink(); ?>"> <?php print_thumbnail( $thumb, $thumbnail["use_timthumb"], $titletext, $width, $height ); ?> </a> <?php elseif ( 'gallery' === $post_format ) : et_pb_gallery_images(); endif; } ?> <?php if ( ! in_array( $post_format, array( 'link', 'audio', 'quote' ) ) ) : ?> <?php if ( ! in_array( $post_format, array( 'link', 'audio' ) ) ) : ?> <h2 class="entry-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <?php endif; ?> <?php et_divi_post_meta(); if ( 'on' !== et_get_option( 'divi_blog_style', 'false' ) || ( is_search() && ( 'on' === get_post_meta( get_the_ID(), '_et_pb_use_builder', true ) ) ) ) { truncate_post( 270 ); } else { the_content(); } ?> <?php endif; ?> </article> <!-- .et_pb_post --> <?php endwhile; if ( function_exists( 'wp_pagenavi' ) ) wp_pagenavi(); else get_template_part( 'includes/navigation', 'index' ); else : get_template_part( 'includes/no-results', 'index' ); endif; endif; /* Categorie */ ?> <?php if ( $html == '' ) : ?> </div> <!-- #left-area --> <?php get_sidebar(); ?> </div> <!-- #content-area --> </div> <!-- .container --> <?php endif; ?> </div> <!-- #main-content --> <?php get_footer(); ?>

Le principe de fonctionnement

Maintenant je dispose de trois possibilités pour l’affichage et le contenu des pages de catégorie :

  1. option 1 : définir une esthétique et un contenu spécifique, pour un groupe de catégories ;
  2.  option 2 : définir une esthétique et un contenu spécifique à une catégorie donnée ;
  3. option 3 : affichage par défaut de WordPress, (avec ajout du titre de la catégorie et sa description si l’on a fait comme dans l’ article Pages catégorie du thème Divi : ajouter titre et description) .

Affichage défini pour un groupe de catégories

Cet affichage se fera si j’ai créé un modèle Divi intitulé « catégorie » (voir plus bas le chapitre « création de modèles de catégorie), et que la catégorie est cochée dans le paramètre « Inclure les catégories: » du module de blog inséré dans le modèle.

On n’a pas d’obligation de créer un tel modèle, on peut décider de définir des modèles spécifiques pour chaque catégorie ou décider de créer des modèles spécifiques pour certaines catégories et laisser l’affichage par défaut pour les autres.

Affichage spécifique à une catégorie donnée

Cet affichage se fera si j’ai créé un modèle Divi intitulé « catégorie identifiant de la catégorie » et que la catégorie a un identifiant « identifiant-de-la-categorie » (voir plus bas le chapitre « création de modèles de catégorie).

Affichage par défaut

Ce sera l’affichage défini par category.php et style.css du thème enfant. Il s’appliquera à toute catégorie qui ne dispose par d’un modèle spécifique (option 2) ou qui n’est pas explicitement définie dans le paramètre « Inclure les catégories: » du modèle générique (option 1). Par exemple, la page de catégorie suivante n’est définie ni par le modèle générique, ni par un modèle spécifique, elle s’affiche ainsi pour un internaute :

Affichage standard d'une page de catégorie

Affichage standard d’une page de catégorie

Création de modèles de catégorie

Création d’un modèle pour un groupe de catégories (l’option 1)

Il n’est pas obligatoire de créer ce modèle pour que l’option 2 puisse fonctionner.

Dans la bibliothèque Divi, je crée un modèle intitulé « catégorie » et j’y place au moins un module de blog. Dans les paramètres du module de blog, l’option « Inclure les catégories: » doit cocher les catégories pour lesquelles je veux que cette disposition s’applique.

Par exemple, mon modèle « catégorie » contient les modules suivants (j’explique le fonctionnement (optionnel) du module « code » plus bas dans ce long article) :

Contenu du modèle Divi pour un groupe de catégories

Contenu du modèle Divi pour un groupe de catégories

 

Dans le module Blog, j’ai défini le style en mode « grille » et les catégories suivantes sont cochées :

Liste des catégories à afficher avec le modèle pour un groupe de catégories

Si un internaute affiche la page de catégorie « réussir le changement » , il verra :

Affichage selon le modèle d'un groupe de catégories

Affichage selon le modèle d’un groupe de catégories

 

Dans le module blog, faites attention au nombre de post défini dans l’option « Nombre de postes: » (sic) : le nombre doit être inférieur ou égal à ce qui est défini dans le menu Divi >> Options du thème, onglet « général ». Dans le cas contraire la pagination de la page de catégorie ne fonctionnera pas.

 

Création d’un modèle pour une catégorie spécifique (l’option 2)

Dans ce cas, un modèle de la bibliothèque Divi a pour nom « catégorie X Y Z », dans lequel X Y Z correspond à l’identifiant de la catégorie. Par exemple si j’ai une catégorie dont l’identifiant est premier-deuxieme-troisieme, le modèle a pour titre « catégorie premier deuxième troisième ». J’ai placé « catégorie » au début du titre puis j’ai écrit l’identifiant en remplaçant les – par des espaces et en mettant des accents (si je veux, pour plus de lisibilité).

Dans le modèle spécifique « catégorie manager équipe » qui s’appliquera à l’affichage d’une catégorie dont l’identifiant est « manager-equipe », j’ai défini le modèle, avec une barre latérale :

Contenu du modèle Divi de catégorie spécifique

Contenu du modèle Divi de catégorie spécifique « catégorie manager équipe « 

Dans le paramétrage du module de blog, je n’ai coché aucune catégorie car ça ne sert à rien. Dans le style, j’ai défini le mode « plein écran » (liste).

La page de la catégorie « Manager son équipe » s’affiche selon le modèle « catégorie manager équipe » :

Affichage selon le modèle de catégorie spécifique "catégorie manager équipe "

Affichage selon le modèle de catégorie spécifique « catégorie manager équipe « 

Insérer automatiquement un titre et une description dans un modèle Divi

Je tiens absolument à ce que le titre de la catégorie s’affiche en haut de la page de catégorie, même lorsqu’un modèle est utilisé. Et dans certains cas, je souhaite que la description soit également présente.

J’ai créé un shortcode pour ça (cf article Thème Divi : intégrer un shortcode à un modèle). Voici son fonctionnement dans les modèles de page de catégorie que j’ai créé :

Si je place [[cat_display title= »yes » centrer= »no » description= »yes »]] dans le module « code » du modèle « catégorie » défini plus haut, j’obtiens une nouvelle mise en page. Maintenant la page de la catégorie « PME : adopter une stratégie durable » contient un titre et une description puis applique les règles du modèle d’un groupe de catégories :

Affichage selon le modèle d'un groupe de catégories, avec titre et description automatique

Affichage selon le modèle d’un groupe de catégories, avec titre et description automatique

 

Sur un autre site, il y a un modèle de catégorie qui contient un « Blurb ».

Un modèle avec le module "Code" juste avant le module 'Blurb"

Un modèle avec le module « Code » juste avant le module ‘Blurb »

Ce modèle s’applique à la catégorie dont l’identifiant est « devenir-une-star-de-son-business-categorie ».

Le titre défini dans le module « Code » juste avant le module « Blurb » s’intègre automatiquement dans le « Blurb » (je ne sais pas pourquoi…, mais c’est bien !). Comme les Blurb sont le plus souvent centrés, j’ai défini l’option centrer dans le shortcode. Ainsi pour cette catégorie spécifique, le titre (« devenir une star de son business »)   va automatiquement s’afficher dans le « Blurb » et sera centré comme le contenu du Blurb :

Divi : affichage selon un modèle spécifique, avec titre intégré à un "blurb"

Affichage selon un modèle spécifique, avec titre intégré à un « blurb »

Et maintenant

Je pense que j’en ai terminé avec les ajustements liés aux pages de catégorie dans cette série !

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 !

Pages catégorie du thème Divi : ajouter titre et description

Pages catégorie du thème Divi : ajouter titre et description

Par défaut, les pages de catégorie du thème Divi n’affichent ni le nom de la catégorie, ni le descriptif que l’on a défini lorsqu’on a créé la catégorie. Dans cet article de la série , nous allons voir comment générer automatiquement ce texte avant l’affichage de la liste des articles de la catégorie.

Créer un thème enfant avant de démarrer

Voir les instructions dans l’article « Créer un thème enfant pour Divi (WordPress)« .

Créer un modèle (template) pour les pages de catégorie

Pour faire ça, je suis partie des idées de ces deux articles :

Créer un fichier category.php

Télécharger le fichier index.php  de /wp-content/themes/Divi et le placer dans le répertoire du thème enfant (pour moi /wp-content/themes/clea-divi-child), puis le renommer category.php .

Pour vérifier qu’il fonctionne, on peut ajouter la ligne

<h2>NOUVEAU template pour les catégories</h2>

en dessous de la ligne

<div id="content-area" class="clearfix">

Lorsqu’on affiche une page de catégorie, on voit effectivement ce titre. Je suis donc certaine que mon fichier category.php est utilisé lors de l’affichage d’une page de catégorie.

Ajouter le titre et la description de la catégorie

J’ai ajouté les éléments des lignes 10 à 19, au début du fichier category.php :

<?php get_header(); ?>

<div id="main-content">
	<div class="container">
		<div id="content-area" class="clearfix">
			<div id="left-area">
		
		<?php 
			if ( have_posts() ) : ?>
			
				<!-- Display category title and description -->
				<header class="archive-header">
					<h1 class="archive-title"><?php single_cat_title( '', true ); ?></h1>

					<!-- Display optional category description -->
					<?php if ( category_description() ) : ?>
					<div class="archive-meta"><?php echo category_description(); ?></div>
					<?php endif; ?>
				</header>
			
		<?php
				while ( have_posts() ) : the_post();

single_cat_title(  », true );  indique qu’il faut afficher le titre de catégorie (true) et ne pas lui ajouter de texte avant ( »).

echo category_description() ;  va afficher la description de la catégorie telle qu’elle a été saisie en définissant la catégorie (menu articles >> catégories).

Maintenant, lorsque j’affiche une page de catégorie, j’ai bien son titre et sa description avant la liste des articles de cette catégorie.

Changer le style de la description

Dans le fichier style.css, j’ajoute :

.archive-meta {
	margin-bottom: 2%;
	font-style: italic;
}

Et maintenant la description est correctement séparée de la liste des articles, et le texte de la description est en italique :

Divi : insertion titre et description de catégorie

Insérer automatiquement le titre et la description de la catégorie dans une page catégorie avec Divi pour WordPress

Rendre visible les liens vers les catégories

Divi prévoit que toutes les méta descriptions des articles restent dans la couleur choisie pour le texte (ici un noir). Mais je veux que les liens vers les catégories soient plus visibles, comme dans la copie d’écran ci-dessus, où la catégorie « Vivre ses rêves » est en orange et pas en noir.

Dans la feuille de style, j’ajoute un style pour les liens vers des catégories (a[rel= »category tag »] ) :

#left-area .post-meta a[rel="category tag"] {
	color: #ed693b;
}

Et maintenant ?

Mon thème enfant fonctionne et modifie le thème parent Divi comme je le souhaitais.

Dans un autre article de cette série, j’explique comment créer des modèles de pages de catégories avec le générateur DIVI, en ayant un modèle générique et des modèles spécifiques à certaines catégories.

Créer un thème enfant pour Divi (WordPress)

Créer un thème enfant pour Divi (WordPress)

J’ai besoin de modifier des fichiers (php et css) du thème Divi. Je crée donc un thème enfant qui me permettra de faire ces modifications sans toucher au thème Divi et en maintenant sa capacité à se mettre à jour. Dans cette article de la série , j’explique comment s’organiser et créer ce thème enfant.

La situation initiale

Je suis sur un site de test, avec le thème Divi que j’ai déjà largement réglé. Bon nombres d’éléments de la personnalisation et des options du thème ont été modifiés. J’ai aussi réglé des barres latérales avec des widgets.

Il va donc falloir que je conserve tous ces ajustements.

Créer un thème enfant

Normalement, pour créer un thème enfant, il suffit de créer un répertoire dans wp-config/themes/ et d’y placer un fichier style.css contenant au moins un nom (theme name) et indiquant que c’est un thème enfant de Divi (Template: Divi) :

/*---------------------------------------------------------------------------------

 Theme Name:   LE NOM DU THEME
 Theme URI:    
 Description:  A child theme for Divi
 Author:       Anne-Laure
 Author URI:   https://knowledge.parcours-performance.com/
 Template:     Divi
 Version:      1.0.0
 License:      GNU General Public License v2 or later
 License URI:  http://www.gnu.org/licenses/gpl-2.0.html

*/

/* On peut mettre du CSS additionnel à partir d'ici */

Mais je ne connais pas encore bien Divi, et j’ai vu qu’il existait un site « constructeur de thème enfant pour Divi ». Alors j’ai essayé.

Je suis donc allée sur la page du « Divi child theme builder » du site divi.space.

J’ai rempli les lignes du formulaire puis téléchargé le fichier zip.

En regardant le contenu des fichiers, j’ai constaté que login-editor.php  contient des éléments qui modifient la personnalisation de la page de login du site. J’ai décidé de laisser ce fichier, et l’instruction qui le requiert dans functions.php. Mais on peut certainement les supprimer.

Ensuite, j’ai installé le fichier zip sur le site mais je ne l’ai pas activé tout de suite.

Sauvegarder les réglages du thème parent

Avant d’activer le thème enfant, sauvegarder les fichiers de réglage de divi, comme indiqué dans l’article Importer et exporter des paramètres et modèles du thème Divi pour WordPress, (uniquement ce qui concerne la personnalisation et les options du thème).

Pour les widgets placés dans des barres latérales (les « sidebars » qui peuvent aussi être en dessous ou au dessus !), je ne sais pas comment les récupérer automatiquement. Il faut donc faire des copies d’écran et de contenus…

MAJ du 28/09/2017 pour exporter les réglages de widgets :

pour les widget, utiliser l’extension Widget Settings Importer/Exporter. Attention, toutes les extensions utilisées pour générer des éléments des widgets doivent avoir été activées au préalable et réglées si nécessaire.

Ensuite dans le tableau de bord WordPress, menu outils, on a Widget Settings Import et export.

On peut choisir ce que l’on exporte. On obtient un fichier widget_data.json  que l’on sauvegarde. Ensuite on pourra importer ce fichier. Ca marche parfaitement pour moi.

Activer le thème enfant puis le régler

J’active le thème enfant puis j’mporte la personnalisation et les options du thème Divi que j’ai sauvegardé.

Je recrée les barres latérales à la main ou par importation avec  l’extension Widget Settings Importer/Exporter.

Et ça y est, on a un thème enfant fonctionnel !

Et maintenant ?

Dans le prochain article de cette série , je modifie Divi grâce à mon thème enfant : je crée un nouveau modèle (template) pour les pages de catégories et j’ajoute un style spécifique.