{"id":2149,"date":"2012-03-12T08:52:55","date_gmt":"2012-03-12T07:52:55","guid":{"rendered":"https:\/\/www.creativejuiz.fr\/blog\/?p=2149"},"modified":"2016-09-08T16:01:41","modified_gmt":"2016-09-08T14:01:41","slug":"ajouter-styles-perso-editeur-tinymce","status":"publish","type":"post","link":"https:\/\/www.creativejuiz.fr\/blog\/wordpress\/ajouter-styles-perso-editeur-tinymce","title":{"rendered":"WordPress &#8211; Ajouter des styles perso dans l&rsquo;\u00e9diteur TinyMCE"},"content":{"rendered":"<p>L&rsquo;\u00e9diteur visuel de WordPress s&rsquo;est am\u00e9lior\u00e9 au fil du temps. Pour votre blog, vous avez probablement des styles particuliers pour le contenu de vos articles (liens, boutons, blocs de contenu, etc.) et peut-\u00eatre passez-vous encore par l&rsquo;\u00e9diteur HTML ?<!--more--><br \/>\nL&rsquo;\u00e9diteur visuel propose pourtant un s\u00e9lecteur de styles bien pratique enti\u00e8rement personnalisable.<\/p>\n<p class=\"message\">Ces scripts ont \u00e9t\u00e9 initialement cr\u00e9\u00e9s pour WordPress 3.3.1.<br \/>\nIls sont <strong>toujours fonctionnels<\/strong> pour <strong>WordPress 4.6.1<\/strong> apr\u00e8s tests effectu\u00e9s.<\/p>\n<h2>Br\u00e8ve pr\u00e9sentation<\/h2>\n<p>L&rsquo;\u00e9diteur visuel TinyMCE propose \u00e0 la base deux s\u00e9lecteurs, un pour les styles, un pour les types de blocs.<br \/>\nSur WordPress, le s\u00e9lecteur de styles a \u00e9t\u00e9 retir\u00e9 pour ne laisser la place qu&rsquo;au s\u00e9lecteur de blocs :<\/p>\n<p class=\"center\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-2275\" title=\"\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/03\/selecteur-tinymce.png\" alt=\"S\u00e9lecteur d'\u00e9l\u00e9ment de type bloc dans l'\u00e9diteur WordPress\" width=\"114\" height=\"176\" \/><\/p>\n<p>Je dis \u00ab\u00a0type de bloc\u00a0\u00bb car il propose par d\u00e9faut uniquement des \u00e9l\u00e9ments de type blocs, dont le panel complet de titres.<\/p>\n<p>Il est possible de <strong>r\u00e9activer<\/strong> dans la barre d&rsquo;outils l&rsquo;autre <strong>s\u00e9lecteur proposant des styles<\/strong>.<br \/>\nNotez qu&rsquo;il est \u00e9galement possible de <strong>personnaliser la feuille de style de l&rsquo;\u00e9diteur<\/strong> afin d&rsquo;y appliquer les styles visibles sur l&rsquo;interface publique.<br \/>\nVoyons cela ensemble.<\/p>\n<h2>Ajouter un s\u00e9lecteur de styles basique<\/h2>\n<p>Cette premi\u00e8re m\u00e9thode n&rsquo;est pas ma pr\u00e9f\u00e9r\u00e9e, mais elle permet d&rsquo;activer rapidement un s\u00e9lecteur fonctionnel.<\/p>\n<p>Tout se passe dans le fichier <code>functions.php<\/code> de votre th\u00e8me WordPress (<code>wp-content\/themes\/[votre-theme]\/<\/code>), pour le moment. En effet, comme les styles sont directement li\u00e9s \u00e0 votre th\u00e8me courant, il est normal d&rsquo;y retrouver les codes dans ce fichier de th\u00e8me.<\/p>\n<h3>Mise en place du code<\/h3>\n<p>Nous allons utiliser le hook <code>tiny_mce_before_init<\/code> qui permet d&rsquo;intervenir avant l&rsquo;initialisation de l&rsquo;\u00e9diteur.<br \/>\nNous allons r\u00e9cup\u00e9rer une variable (un tableau) et lui ins\u00e9rer des donn\u00e9es suppl\u00e9mentaires \u00e0 initialiser.<\/p>\n<pre class=\"code\"><code class=\"language-php\">&lt;?php\r\n\/\/ on ex\u00e9cute la fonction avant initialisation de l'\u00e9diteur\r\nadd_filter( 'tiny_mce_before_init', 'juiz_custom_tinymce' );\r\n\u00a0\r\n\/\/ la fonction est d\u00e9clar\u00e9e si elle n'existe pas d\u00e9j\u00e0\r\nif ( !function_exists('juiz_custom_tinymce')) {\r\n\tfunction juiz_custom_tinymce( $tools ) {\r\n\t\t\/\/ on ajoute \"styleselect\" \u00e0 une liste d'outils s\u00e9par\u00e9s par une virgule\r\n\t\t\/\/ on compl\u00e8te ici la seconde ligne d'outils (buttons2)\r\n\t\t$tools['theme_advanced_buttons2'] = 'styleselect,'.$tools['theme_advanced_buttons2'];\r\n\u00a0\r\n\t\t\/\/ on ajoute des commandes en ligne ou en bloc (box) \u00e0 notre s\u00e9lecteur\r\n\t\t$tools['theme_advanced_styles'] = __('Bouton').'=button, '.__('T\u00e9l\u00e9charger').'=download, '.__('D\u00e9monstration').'=demo, '.__('Bo\u00eete de boutons').'=buttons-box, '.__('Exergue').'=highlight';\r\n\u00a0\r\n\t\t\/\/ on retourne notre liste d'outils compl\u00e9t\u00e9e\r\n\t\treturn $tools; \r\n\t}\r\n}\r\n?&gt;<\/code><\/pre>\n<figure id=\"attachment_2290\" aria-labelledby=\"figcaption_attachment_2290\" class=\"wp-caption aligncenter\" style=\"width: 142px\"><img decoding=\"async\" class=\"size-full wp-image-2290\" title=\"\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/03\/selecteur-styles-basique.png\" alt=\"\" width=\"132\" height=\"170\" \/><figcaption id=\"figcaption_attachment_2290\" class=\"wp-caption-text\">S\u00e9lecteur obtenu avec ce code<\/figcaption><\/figure>\n<p>Je vais d\u00e9tailler deux parties de ce code pour que ce soit plus clair.<\/p>\n<p><strong>Ligne 10<\/strong> &#8211; La liste des outils d\u00e9j\u00e0 existants sur la deuxi\u00e8me ligne de boutons a cette forme\u00a0 <code>formatselect,underline,justifyfull,forecolor,|<\/code>.<br \/>\nIl s&rsquo;agit d&rsquo;une liste des outils s\u00e9par\u00e9s par une virgule. Le | (\u00ab\u00a0trait vertical\u00a0\u00bb) repr\u00e9sente un s\u00e9parateur. Pour compl\u00e9ter cette liste, il nous suffit de la reprendre et d&rsquo;y placer juste avant notre \u00ab\u00a0styleselect\u00a0\u00bb accompagn\u00e9 de sa virgule.<br \/>\nVous noterez la possibilit\u00e9 de remplacer \u00ab\u00a0buttons2\u00a0\u00bb par \u00ab\u00a0buttons1\u00a0\u00bb ou \u00ab\u00a0buttons3\u00a0\u00bb afin d&rsquo;ins\u00e9rer le s\u00e9lecteur en 1\u00e8re ligne ou de cr\u00e9er une troisi\u00e8me ligne de commandes.<\/p>\n<p><strong>Ligne 12<\/strong> &#8211; Chaque nouveau style s&rsquo;applique soit \u00e0 un \u00e9l\u00e9ment en ligne soit \u00e0 un \u00e9l\u00e9ment de type bloc, sans distinction. Chaque style est pr\u00e9sent\u00e9 ainsi :<br \/>\n<code>Nom=classe_associee<\/code>. Ici le nom du bouton se trouve dans une fonction de traduction (au cas o\u00f9 ;))<\/p>\n<h3>Les limites de cette technique<\/h3>\n<p>\u00c0 l&rsquo;usage, vous vous rendrez compte que lorsque vous s\u00e9lectionnez un texte et cliquez sur un style un \u00e9l\u00e9ment <code class=\"element\">span<\/code> porteur de la classe associ\u00e9e est cr\u00e9\u00e9. Si l&rsquo;\u00e9l\u00e9ment s\u00e9lectionn\u00e9 est d\u00e9j\u00e0 un \u00e9l\u00e9ment en ligne (exemple : un lien) alors la classe sera ajout\u00e9e au lien. Si l&rsquo;\u00e9l\u00e9ment s\u00e9lectionn\u00e9 est de type bloc la classe sera attribu\u00e9e \u00e0 l&rsquo;\u00e9l\u00e9ment (souvent un <code class=\"element\">p<\/code>) directement. (ce peut-\u00eatre un <code>blockquote<\/code>, titre, paragraphe, etc.)<\/p>\n<p class=\"message remember\">La s\u00e9lection des blocs est assez d\u00e9sastreuse, cette technique s&rsquo;applique donc plus facilement \u00e0 <strong>des styles en ligne<\/strong>.<\/p>\n<h2>Ajouter un s\u00e9lecteur de styles avanc\u00e9<\/h2>\n<p>Comment faire pour <strong>ajouter un \u00e9l\u00e9ment <code class=\"element\">div<\/code><\/strong> avec une classe \u00ab\u00a0poney\u00a0\u00bb \u00e0 mon ensemble de paragraphes ?<br \/>\nComment faire pour <strong>appliquer un style uniquement si l&rsquo;\u00e9l\u00e9ment s\u00e9lectionn\u00e9 est un lien<\/strong> ?<br \/>\nComment \u2026 ?<\/p>\n<p>C&rsquo;est l\u00e0 que notre seconde technique peut vous int\u00e9resser : elle consiste en l&rsquo;utilisation de tableau pour chaque style permettant de d\u00e9finir des param\u00e8tres pr\u00e9cis pr\u00e9vus par TinyMCE et WordPress.<\/p>\n<h3>Mise en place du code<\/h3>\n<p>Comme pr\u00e9c\u00e9demment, ajoutons notre s\u00e9lecteur de styles en passant cette fois par le hook <code>mce_buttons_2<\/code> qui permet de jouer avec un tableau PHP des diff\u00e9rents boutons de la deuxi\u00e8me ligne de commandes.<\/p>\n<pre class=\"code\"><code class=\"language-php\">&lt;?php\r\nadd_filter( 'mce_buttons_2', 'juiz_mce_buttons_2' );\r\n\u00a0\r\nif ( !function_exists('juiz_mce_buttons_2')) {\r\n\tfunction juiz_mce_buttons_2( $buttons ) {\r\n\t\tarray_unshift( $buttons, 'styleselect' );\r\n\u00a0\r\n\t\treturn $buttons;\r\n\t}\r\n}\r\n?&gt;<\/code><\/pre>\n<p>Ce filtre est plus direct puisqu&rsquo;il s&rsquo;applique directement aux boutons.<br \/>\nLa fonction PHP <a href=\"http:\/\/php.net\/manual\/fr\/function.array-unshift.php\"><code>array_unshift()<\/code><\/a> permet d&#8217;empiler un \u00e9l\u00e9ment au d\u00e9but d&rsquo;un tableau PHP. Ici nous empilons \u00ab\u00a0styleselect\u00a0\u00bb aux boutons (aux entr\u00e9es de tableau donc) d\u00e9j\u00e0 existants.<\/p>\n<figure id=\"attachment_2282\" aria-labelledby=\"figcaption_attachment_2282\" class=\"wp-caption aligncenter\" style=\"width: 135px\"><img decoding=\"async\" class=\"size-full wp-image-2282\" title=\"\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/03\/existing-styles-wordpress.png\" alt=\"\" width=\"125\" height=\"176\" \/><figcaption id=\"figcaption_attachment_2282\" class=\"wp-caption-text\">S\u00e9lecteur de styles pr\u00e9d\u00e9finis<\/figcaption><\/figure>\n<p>Si on s&rsquo;arr\u00eate l\u00e0, on obtient un s\u00e9lecteur des styles d\u00e9j\u00e0 d\u00e9clar\u00e9s par d\u00e9faut dans WordPress. Ces styles sont d\u00e9j\u00e0 applicables via les diff\u00e9rentes autres commandes de l&rsquo;\u00e9diteur.<br \/>\nNous allons les remplacer par les n\u00f4tres en injectant 3 styles bien diff\u00e9rents pour que vous compreniez l&rsquo;int\u00e9r\u00eat de cette technique.<br \/>\nAjoutez ce code \u00e0 la suite du pr\u00e9c\u00e9dent.<\/p>\n<pre class=\"code\"><code class=\"language-php\">&lt;?php\r\n\/\/ le hook que nous avons vu en tout d\u00e9but d'article\u2026\r\nadd_filter( 'tiny_mce_before_init', 'juiz_mce_before_init' );\r\n\u00a0\r\nif ( !function_exists('juiz_mce_before_init')) {\r\n\tfunction juiz_mce_before_init( $styles ) {\r\n\t\t\/\/ on cr\u00e9\u00e9 un tableau contenant nos styles\r\n\t\t$style_formats = array (\r\n\t\t\t\/\/ chaque style est un nouveau tableau\r\n\u00a0\r\n\t\t\t\/\/ Style \"Italique et gras\"\r\n\t\t\tarray(\r\n\t\t\t\t'title' =&gt; __('Italique et gras'),\r\n\t\t\t\t'inline' =&gt; 'span',\r\n\t\t\t\t'styles' =&gt; array(\r\n\t\t\t\t\t'fontStyle' =&gt; 'italic',\r\n\t\t\t\t\t'fontWeight' =&gt; 'bold'\r\n\t\t\t\t)\r\n\t\t\t),\r\n\u00a0\r\n\t\t\t\/\/ Style \"bouton\"\r\n\t\t\tarray(\r\n\t\t\t\t'title' =&gt; __('Bouton'),\r\n\t\t\t\t'selector' =&gt; 'a',\r\n\t\t\t\t'classes' =&gt; 'button'\r\n\t\t\t),\r\n\u00a0\r\n\t\t\t\/\/ Style \"Exergue box\"\r\n\t\t\tarray(\r\n\t\t\t\t'title' =&gt; __('Exergue Box'),\r\n\t\t\t\t'block' =&gt; 'div',\r\n\t\t\t\t'classes' =&gt; 'highlight',\r\n\t\t\t\t'wrapper' =&gt; true\r\n\t\t\t)\r\n\t\t);\r\n\u00a0\r\n\t\t\/\/ on remplace les styles existants par les n\u00f4tres\r\n\t\t$styles['style_formats'] = json_encode( $style_formats );\r\n\u00a0\r\n\t\treturn $styles;\r\n\t}\r\n}\r\n?&gt;<\/code><\/pre>\n<p>Ce morceau de code est long, mais sur le principe il est simple \u00e0 comprendre. Il faut se concentrer sur les tableaux qui g\u00e9n\u00e8rent les styles.<br \/>\nPour \u00eatre fonctionnel un style a au moins besoin d&rsquo;un nom (<code>title<\/code>) et de son type. (<code>inline<\/code>, <code>block<\/code>, ou <code>selector<\/code>, repr\u00e9sent\u00e9s par les trois exemples)<\/p>\n<figure id=\"attachment_2283\" aria-labelledby=\"figcaption_attachment_2283\" class=\"wp-caption aligncenter\" style=\"width: 129px\"><img decoding=\"async\" class=\"size-full wp-image-2283\" title=\"\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/03\/custom-styles-wordpress.png\" alt=\"\" width=\"119\" height=\"122\" \/><figcaption id=\"figcaption_attachment_2283\" class=\"wp-caption-text\">S\u00e9lecteur de styles personnalis\u00e9es<\/figcaption><\/figure>\n<h4>Le type <code>inline<\/code><\/h4>\n<p><strong>Ligne 12 \u00e0 19<\/strong> &#8211; Ce type de style permet d&rsquo;ajouter un \u00e9l\u00e9ment de type <em>inline<\/em> (un <code class=\"element\">span<\/code> dans notre exemple) autour de votre s\u00e9lection dans l&rsquo;\u00e9diteur. Il est possible de proposer \u00e0 ce type de style d&rsquo;y joindre une classe, ou des styles en ligne (via l&rsquo;attribut <code>style<\/code>, comme c&rsquo;est le cas dans l&rsquo;exemple). Les styles en ligne sont alors \u00e0 renseigner dans un tableau PHP (ligne 14 \u00e0 17) est sont \u00e0 \u00e9crire en <a href=\"http:\/\/fr.wikipedia.org\/wiki\/CamelCase\">CamelCase<\/a> pour ce qui est du nom de propri\u00e9t\u00e9s.<\/p>\n<h4>Le type <code>selector<\/code><\/h4>\n<p><strong>Ligne 22 \u00e0 26<\/strong> &#8211; Ce type de style permet d&rsquo;activer l&rsquo;ajout d&rsquo;une classe ou de styles en ligne uniquement lorsque l&rsquo;\u00e9l\u00e9ment s\u00e9lectionn\u00e9 dans l&rsquo;\u00e9diteur correspond \u00e0 la valeur de <code>selector<\/code>. Dans notre exemple, la classe <code>button<\/code> ne sera ajout\u00e9e que si notre curseur dans l&rsquo;\u00e9diteur se trouve sur un <code class=\"element\">a<\/code> (un lien).<\/p>\n<h4>Le type <code>block<\/code><\/h4>\n<p><strong>Ligne 29 \u00e0 34<\/strong> &#8211; Ce type de style permet de cr\u00e9er un \u00e9l\u00e9ment de type bloc autour de la s\u00e9lection lorsque la valeur de <code>wrapper<\/code> est \u00e0 <code>true<\/code>. Si la valeur de <code>wrapper<\/code> est \u00e0 <code>false<\/code>, la de la s\u00e9lection verra tous ses \u00e9l\u00e9ments de type bloc remplac\u00e9s par un <code class=\"element\">div<\/code> de classe <code>highlight<\/code> (si on reprend les informations de l&rsquo;exemple).<\/p>\n<p>Voici un tableau r\u00e9capitulatif .<\/p>\n<table summary=\"Informations applicables dans le cadre d'une cr\u00e9ation de styles personnalis\u00e9s\">\n<caption>Informations applicables pour vos styles perso<\/caption>\n<tbody>\n<tr>\n<th><code>title<\/code> <em>(requis)<\/em><\/th>\n<td>Le nom du style visible dans le s\u00e9lecteur<\/td>\n<\/tr>\n<tr>\n<th><code>selector<\/code> ou <code>block<\/code> ou <code>inline<\/code> (requis)<\/th>\n<td>\n<ul>\n<li><code>selector<\/code> &#8211; limite l&rsquo;application du style \u00e0 un \u00e9l\u00e9ment HTML <u>pr\u00e9cis et existant<\/u> (\u00e7a n&rsquo;en cr\u00e9era pas de nouveau)<\/li>\n<li><code>block<\/code> &#8211; cr\u00e9e un nouvel \u00e9l\u00e9ment de type bloc avec les classes ou styles appliqu\u00e9s, il peut envelopper la s\u00e9lection ou remplacer les blocs existants en fonction de la valeur de <code>wrapper<\/code><\/li>\n<li><code>inline<\/code> &#8211; Cr\u00e9e un nouvel \u00e9l\u00e9ment de type en-ligne en enveloppant la s\u00e9lection active dans l&rsquo;\u00e9diteur. Il ne remplace aucune balise existante.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<th><code>classes<\/code> <em><em>(optionnel)<\/em><\/em><\/th>\n<td>une liste de classes s\u00e9par\u00e9es par un espace blanc, elles seront appliqu\u00e9es \u00e0 la s\u00e9lection.<\/td>\n<\/tr>\n<tr>\n<th><code>styles<\/code> <em>(optionnel)<\/em><\/th>\n<td>tableau PHP de styles appliqu\u00e9 en-ligne (attribut <code>style<\/code>) (les propri\u00e9t\u00e9s CSS en deux mots doivent \u00eatre \u00e9crites en CamelCase. Ex: \u00ab\u00a0fontWeight\u00a0\u00bb)<\/td>\n<\/tr>\n<tr>\n<th><code>attributes<\/code> <em>(optionnel)<\/em><\/th>\n<td>tableau PHP des attributs appliqu\u00e9s (ex : <code>array( 'title' =&gt; 'Le titre \u00e0 \u00e9crire', 'hreflang' =&gt; 'en' );<\/code> )<\/td>\n<\/tr>\n<tr>\n<th><code>wrapper<\/code><br \/>\n<em>(optionnel, vaut <code>false<\/code> par d\u00e9faut)<\/em><\/th>\n<td>pass\u00e9 \u00e0 <strong>true<\/strong>, cr\u00e9e un nouvel \u00e9l\u00e9ment bloc autour de tous les \u00e9l\u00e9ments blocs (ou en-ligne) s\u00e9lectionn\u00e9s<\/td>\n<\/tr>\n<tr>\n<th><code>exact<\/code><br \/>\n<em>(optionnel,vaut <code>false<\/code> par d\u00e9faut)<\/em><\/th>\n<td>d\u00e9sactive la fonction de fusion des styles similaires, n\u00e9cessaire dans certain cas pr\u00e9cis en CSS<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Vous remarquerez que <code>styles<\/code> et <code>classes<\/code> sont optionnels\u2026 c&rsquo;est louche pour un s\u00e9lecteur de styles. M&rsquo;enfin, passons.<br \/>\nL&rsquo;entr\u00e9e permettant d&rsquo;ajouter des attributs en fait bien plus qu&rsquo;un simple s\u00e9lecteur de styles \ud83d\ude09<\/p>\n<h2>Ajouter des styles CSS pour styler le contenu de l&rsquo;\u00e9diteur<\/h2>\n<p><img decoding=\"async\" class=\"alignleft size-full wp-image-2281\" title=\"\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/03\/bouton-style-perso.png\" alt=\"\" width=\"206\" height=\"154\" \/> C&rsquo;est bien beau d&rsquo;ajouter des classes et attributs \u00e0 notre contenu dans l&rsquo;\u00e9diteur, mais \u00e7a ne serait pas trop mal de voir les styles correspondants s&rsquo;afficher, ne serait-ce que pour nous assurer que les classes ont bien \u00e9t\u00e9 appliqu\u00e9es.<\/p>\n<p>Pour effectuer cela il vous suffit d&rsquo;ajouter un fichier CSS \u00e0 la racine de votre th\u00e8me, ce fichier doit se nommer <code>editor-style.css<\/code>.<br \/>\nUne fois le fichier et les styles cr\u00e9\u00e9s, il faut appliquer ce fichier dans l&rsquo;administration lorsque l&rsquo;\u00e9diteur est charg\u00e9. Dans functions.php ajoutez ceci :<\/p>\n<pre class=\"code\"><code class=\"language-php\">&lt;?php\r\nif ( !function_exists('juiz_init_editor_styles')) {\r\n   add_action( 'after_setup_theme', 'juiz_init_editor_styles' );\r\n   function juiz_init_editor_styles() {\r\n\tadd_editor_style();\r\n   }\r\n}\r\n?&gt;<\/code><\/pre>\n<p>Et le tour est jou\u00e9 !<br \/>\nN&rsquo;h\u00e9sitez pas \u00e0 commenter si vous avez des questions, \u00e7a pourrait servir \u00e0 d&rsquo;autres \u00e9galement.<\/p>\n<p class=\"message note\">Pour ceux qui attendent des articles sur CSS, trois articles sont en cours de r\u00e9daction et vous ne serez pas d\u00e9\u00e7us. Patience \ud83d\ude09<\/p>\n<div class=\"tdm\">\n<h2>Astuces TinyMCE<\/h2>\n<ul>\n<li><span class=\"current\">Ajouter des styles perso \u00e0 l&rsquo;\u00e9diteur TinyMCE<\/span><\/li>\n<li><a href=\"https:\/\/www.creativejuiz.fr\/blog\/wordpress\/supprimer-blocs-dans-selecteur-format-tinymce\">Supprimer des blocs dans le s\u00e9lecteur TinyMCE<\/a><\/li>\n<\/ul>\n<\/div>\n<div class=\"sources\">\n<h2>Sources et liens utiles<\/h2>\n<ul>\n<li><a lang=\"en\" href=\"http:\/\/www.tinymce.com\/wiki.php\/Configuration:formats\" hreflang=\"en\">TinyMCE Wiki &#8211; Configuration : Formats<\/a><\/li>\n<li><a lang=\"en\" href=\"http:\/\/alisothegeek.com\/2011\/05\/tinymce-styles-dropdown-wordpress-visual-editor\/\" hreflang=\"en\">AlisoTheGeek &#8211; TinyMCE Styles dropdown<\/a><\/li>\n<li><a lang=\"en\" href=\"http:\/\/www.wdmac.com\/how-to-use-custom-styles-in-the-word-press-post-editor\" hreflang=\"en\">Wdmac &#8211; Custom Styles in WordPress Editor<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>L&rsquo;\u00e9diteur visuel de WordPress s&rsquo;est am\u00e9lior\u00e9 au fil du temps. Pour votre blog, vous avez probablement des styles particuliers pour le contenu de vos articles (liens, boutons, blocs de contenu, etc.) et peut-\u00eatre passez-vous encore par l&rsquo;\u00e9diteur HTML ?<\/p>\n","protected":false},"author":4,"featured_media":2274,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_bluesky_dont_syndicate":"","_bluesky_syndication_accounts":"","_bluesky_syndication_text":"","footnotes":""},"categories":[13],"tags":[228,372,263,434,449,684],"coauthors":[597],"class_list":["post-2149","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress","tag-astuce","tag-custom","tag-editeur","tag-hook","tag-tinymce","tag-wordpress"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"L&#039;\u00e9diteur visuel de WordPress s&#039;est am\u00e9lior\u00e9 au fil du temps. Pour votre blog, vous avez probablement des styles particuliers pour le contenu de vos articles (liens, boutons, blocs de contenu, etc.) et peut-\u00eatre passez-vous encore par l&#039;\u00e9diteur HTML ? L&#039;\u00e9diteur visuel propose pourtant un s\u00e9lecteur de styles bien pratique enti\u00e8rement personnalisable. Ces scripts ont \u00e9t\u00e9\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Geoffrey Crofte\"\/>\n\t<meta name=\"keywords\" content=\"astuce,custom,\u00e9diteur,hook,tinymce,wordpress\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.creativejuiz.fr\/blog\/wordpress\/ajouter-styles-perso-editeur-tinymce\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/wordpress\\\/ajouter-styles-perso-editeur-tinymce#article\",\"name\":\"WordPress \\u2013 Ajouter des styles perso dans l\\u2019\\u00e9diteur TinyMCE\",\"headline\":\"WordPress &#8211; Ajouter des styles perso dans l&rsquo;\\u00e9diteur TinyMCE\",\"author\":{\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/auteur\\\/geoffrey#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/03\\\/selecteur-styles-wordpress.png\",\"width\":100,\"height\":100},\"datePublished\":\"2012-03-12T08:52:55+01:00\",\"dateModified\":\"2016-09-08T16:01:41+02:00\",\"inLanguage\":\"fr-FR\",\"commentCount\":64,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/wordpress\\\/ajouter-styles-perso-editeur-tinymce#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/wordpress\\\/ajouter-styles-perso-editeur-tinymce#webpage\"},\"articleSection\":\"WordPress, astuce, custom, \\u00e9diteur, hook, TinyMCE, WordPress, CreativeJuiz\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/wordpress\\\/ajouter-styles-perso-editeur-tinymce#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog#listItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/theme\\\/wordpress#listItem\",\"name\":\"WordPress\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/theme\\\/wordpress#listItem\",\"position\":2,\"name\":\"WordPress\",\"item\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/theme\\\/wordpress\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/wordpress\\\/ajouter-styles-perso-editeur-tinymce#listItem\",\"name\":\"WordPress &#8211; Ajouter des styles perso dans l&rsquo;\\u00e9diteur TinyMCE\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog#listItem\",\"name\":\"Accueil\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/wordpress\\\/ajouter-styles-perso-editeur-tinymce#listItem\",\"position\":3,\"name\":\"WordPress &#8211; Ajouter des styles perso dans l&rsquo;\\u00e9diteur TinyMCE\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/theme\\\/wordpress#listItem\",\"name\":\"WordPress\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/#person\",\"name\":\"Geoffrey Crofte\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/wordpress\\\/ajouter-styles-perso-editeur-tinymce#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c9e2509009badcdf656faf5019ef0f567c4dd4e6e49beca151c21d23995db473?s=96&d=monsterid&r=g\",\"width\":96,\"height\":96,\"caption\":\"Geoffrey Crofte\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/auteur\\\/geoffrey#author\",\"url\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/auteur\\\/geoffrey\",\"name\":\"Geoffrey Crofte\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/wordpress\\\/ajouter-styles-perso-editeur-tinymce#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c9e2509009badcdf656faf5019ef0f567c4dd4e6e49beca151c21d23995db473?s=96&d=monsterid&r=g\",\"width\":96,\"height\":96,\"caption\":\"Geoffrey Crofte\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/wordpress\\\/ajouter-styles-perso-editeur-tinymce#webpage\",\"url\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/wordpress\\\/ajouter-styles-perso-editeur-tinymce\",\"name\":\"WordPress \\u2013 Ajouter des styles perso dans l\\u2019\\u00e9diteur TinyMCE\",\"description\":\"L'\\u00e9diteur visuel de WordPress s'est am\\u00e9lior\\u00e9 au fil du temps. Pour votre blog, vous avez probablement des styles particuliers pour le contenu de vos articles (liens, boutons, blocs de contenu, etc.) et peut-\\u00eatre passez-vous encore par l'\\u00e9diteur HTML ? L'\\u00e9diteur visuel propose pourtant un s\\u00e9lecteur de styles bien pratique enti\\u00e8rement personnalisable. Ces scripts ont \\u00e9t\\u00e9\",\"inLanguage\":\"fr-FR\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/wordpress\\\/ajouter-styles-perso-editeur-tinymce#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/auteur\\\/geoffrey#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/auteur\\\/geoffrey#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/03\\\/selecteur-styles-wordpress.png\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/wordpress\\\/ajouter-styles-perso-editeur-tinymce\\\/#mainImage\",\"width\":100,\"height\":100},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/wordpress\\\/ajouter-styles-perso-editeur-tinymce#mainImage\"},\"datePublished\":\"2012-03-12T08:52:55+01:00\",\"dateModified\":\"2016-09-08T16:01:41+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/\",\"name\":\"Creative Juiz\",\"description\":\"HTML5, CSS3, JavaScript, WordPress Tutorials\",\"inLanguage\":\"fr-FR\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"WordPress \u2013 Ajouter des styles perso dans l\u2019\u00e9diteur TinyMCE","description":"L'\u00e9diteur visuel de WordPress s'est am\u00e9lior\u00e9 au fil du temps. Pour votre blog, vous avez probablement des styles particuliers pour le contenu de vos articles (liens, boutons, blocs de contenu, etc.) et peut-\u00eatre passez-vous encore par l'\u00e9diteur HTML ? L'\u00e9diteur visuel propose pourtant un s\u00e9lecteur de styles bien pratique enti\u00e8rement personnalisable. Ces scripts ont \u00e9t\u00e9","canonical_url":"https:\/\/www.creativejuiz.fr\/blog\/wordpress\/ajouter-styles-perso-editeur-tinymce","robots":"max-image-preview:large","keywords":"astuce,custom,\u00e9diteur,hook,tinymce,wordpress","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.creativejuiz.fr\/blog\/wordpress\/ajouter-styles-perso-editeur-tinymce#article","name":"WordPress \u2013 Ajouter des styles perso dans l\u2019\u00e9diteur TinyMCE","headline":"WordPress &#8211; Ajouter des styles perso dans l&rsquo;\u00e9diteur TinyMCE","author":{"@id":"https:\/\/www.creativejuiz.fr\/blog\/auteur\/geoffrey#author"},"publisher":{"@id":"https:\/\/www.creativejuiz.fr\/blog\/#person"},"image":{"@type":"ImageObject","url":"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/03\/selecteur-styles-wordpress.png","width":100,"height":100},"datePublished":"2012-03-12T08:52:55+01:00","dateModified":"2016-09-08T16:01:41+02:00","inLanguage":"fr-FR","commentCount":64,"mainEntityOfPage":{"@id":"https:\/\/www.creativejuiz.fr\/blog\/wordpress\/ajouter-styles-perso-editeur-tinymce#webpage"},"isPartOf":{"@id":"https:\/\/www.creativejuiz.fr\/blog\/wordpress\/ajouter-styles-perso-editeur-tinymce#webpage"},"articleSection":"WordPress, astuce, custom, \u00e9diteur, hook, TinyMCE, WordPress, CreativeJuiz"},{"@type":"BreadcrumbList","@id":"https:\/\/www.creativejuiz.fr\/blog\/wordpress\/ajouter-styles-perso-editeur-tinymce#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.creativejuiz.fr\/blog#listItem","position":1,"name":"Accueil","item":"https:\/\/www.creativejuiz.fr\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/www.creativejuiz.fr\/blog\/theme\/wordpress#listItem","name":"WordPress"}},{"@type":"ListItem","@id":"https:\/\/www.creativejuiz.fr\/blog\/theme\/wordpress#listItem","position":2,"name":"WordPress","item":"https:\/\/www.creativejuiz.fr\/blog\/theme\/wordpress","nextItem":{"@type":"ListItem","@id":"https:\/\/www.creativejuiz.fr\/blog\/wordpress\/ajouter-styles-perso-editeur-tinymce#listItem","name":"WordPress &#8211; Ajouter des styles perso dans l&rsquo;\u00e9diteur TinyMCE"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.creativejuiz.fr\/blog#listItem","name":"Accueil"}},{"@type":"ListItem","@id":"https:\/\/www.creativejuiz.fr\/blog\/wordpress\/ajouter-styles-perso-editeur-tinymce#listItem","position":3,"name":"WordPress &#8211; Ajouter des styles perso dans l&rsquo;\u00e9diteur TinyMCE","previousItem":{"@type":"ListItem","@id":"https:\/\/www.creativejuiz.fr\/blog\/theme\/wordpress#listItem","name":"WordPress"}}]},{"@type":"Person","@id":"https:\/\/www.creativejuiz.fr\/blog\/#person","name":"Geoffrey Crofte","image":{"@type":"ImageObject","@id":"https:\/\/www.creativejuiz.fr\/blog\/wordpress\/ajouter-styles-perso-editeur-tinymce#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/c9e2509009badcdf656faf5019ef0f567c4dd4e6e49beca151c21d23995db473?s=96&d=monsterid&r=g","width":96,"height":96,"caption":"Geoffrey Crofte"}},{"@type":"Person","@id":"https:\/\/www.creativejuiz.fr\/blog\/auteur\/geoffrey#author","url":"https:\/\/www.creativejuiz.fr\/blog\/auteur\/geoffrey","name":"Geoffrey Crofte","image":{"@type":"ImageObject","@id":"https:\/\/www.creativejuiz.fr\/blog\/wordpress\/ajouter-styles-perso-editeur-tinymce#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/c9e2509009badcdf656faf5019ef0f567c4dd4e6e49beca151c21d23995db473?s=96&d=monsterid&r=g","width":96,"height":96,"caption":"Geoffrey Crofte"}},{"@type":"WebPage","@id":"https:\/\/www.creativejuiz.fr\/blog\/wordpress\/ajouter-styles-perso-editeur-tinymce#webpage","url":"https:\/\/www.creativejuiz.fr\/blog\/wordpress\/ajouter-styles-perso-editeur-tinymce","name":"WordPress \u2013 Ajouter des styles perso dans l\u2019\u00e9diteur TinyMCE","description":"L'\u00e9diteur visuel de WordPress s'est am\u00e9lior\u00e9 au fil du temps. Pour votre blog, vous avez probablement des styles particuliers pour le contenu de vos articles (liens, boutons, blocs de contenu, etc.) et peut-\u00eatre passez-vous encore par l'\u00e9diteur HTML ? L'\u00e9diteur visuel propose pourtant un s\u00e9lecteur de styles bien pratique enti\u00e8rement personnalisable. Ces scripts ont \u00e9t\u00e9","inLanguage":"fr-FR","isPartOf":{"@id":"https:\/\/www.creativejuiz.fr\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.creativejuiz.fr\/blog\/wordpress\/ajouter-styles-perso-editeur-tinymce#breadcrumblist"},"author":{"@id":"https:\/\/www.creativejuiz.fr\/blog\/auteur\/geoffrey#author"},"creator":{"@id":"https:\/\/www.creativejuiz.fr\/blog\/auteur\/geoffrey#author"},"image":{"@type":"ImageObject","url":"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/03\/selecteur-styles-wordpress.png","@id":"https:\/\/www.creativejuiz.fr\/blog\/wordpress\/ajouter-styles-perso-editeur-tinymce\/#mainImage","width":100,"height":100},"primaryImageOfPage":{"@id":"https:\/\/www.creativejuiz.fr\/blog\/wordpress\/ajouter-styles-perso-editeur-tinymce#mainImage"},"datePublished":"2012-03-12T08:52:55+01:00","dateModified":"2016-09-08T16:01:41+02:00"},{"@type":"WebSite","@id":"https:\/\/www.creativejuiz.fr\/blog\/#website","url":"https:\/\/www.creativejuiz.fr\/blog\/","name":"Creative Juiz","description":"HTML5, CSS3, JavaScript, WordPress Tutorials","inLanguage":"fr-FR","publisher":{"@id":"https:\/\/www.creativejuiz.fr\/blog\/#person"}}]}},"aioseo_meta_data":{"post_id":"2149","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[],"defaultGraph":"","defaultPostTypeGraph":""},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-21 17:18:25","updated":"2025-07-09 23:24:55","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"_links":{"self":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/2149","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/comments?post=2149"}],"version-history":[{"count":0,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/2149\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media\/2274"}],"wp:attachment":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media?parent=2149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/categories?post=2149"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/tags?post=2149"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/coauthors?post=2149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}