{"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":[],"_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}]}}