{"id":2925,"date":"2012-10-03T08:54:01","date_gmt":"2012-10-03T06:54:01","guid":{"rendered":"https:\/\/www.creativejuiz.fr\/blog\/?p=2925"},"modified":"2024-01-31T16:46:33","modified_gmt":"2024-01-31T15:46:33","slug":"wordpress-personnaliser-un-theme-avec-child-theme-enfant","status":"publish","type":"post","link":"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/wordpress-personnaliser-un-theme-avec-child-theme-enfant","title":{"rendered":"WordPress \u2013 Personnaliser un th\u00e8me ? Oui, avec un child theme"},"content":{"rendered":"<p>Les th\u00e8mes WordPress sont de plus en plus courus par tous : d\u00e9butants, blogueurs confirm\u00e9s ou professionnels du web. Il est possible d&rsquo;en obtenir gratuitement un peu partout sur la toile, pas toujours de bonne qualit\u00e9, pas toujours tr\u00e8s s\u00e9curis\u00e9s, comme il est possible d&rsquo;en obtenir de payants (je n&rsquo;ai pas dit qu&rsquo;ils \u00e9taient mieux). Dans tous les cas il est possible de les personnaliser.<!--more--><\/p>\n<h2>Plusieurs solutions<\/h2>\n<h3 lang=\"en\">Wild tweaking<\/h3>\n<p>La premi\u00e8re, la moins propre, consiste \u00e0 modifier directement les fichiers du th\u00e8me, am\u00e9liorer les portions de code des articles, des commentaires, ou simplement de l&rsquo;en-t\u00eate de votre document ou du fichier <code>functions.php<\/code> pour ajouter quelques morceaux de code trouv\u00e9s sur la toile.<br \/>\n<img decoding=\"async\" class=\"noborder alignleft size-full wp-image-3047\" title=\"\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/10\/pot-de-peinture.png\" alt=\"\" width=\"150\" height=\"170\" \/>Soit. Mais sachez qu&rsquo;en faisant cela, il ne vous sera plus possible de mettre \u00e0 jour votre th\u00e8me. (en tout cas pas automatiquement)<\/p>\n<p>En effet, \u00e0 l&rsquo;instar des plugins, les th\u00e8mes sont versionn\u00e9s et peuvent subir des mises \u00e0 jour (am\u00e9lioration de fonctionnalit\u00e9, mise \u00e0 jour de s\u00e9curit\u00e9, etc.). S&rsquo;il vous prenait l&rsquo;envie de mettre \u00e0 jour un th\u00e8me modifi\u00e9 par vos soins, vos modifications seraient alors \u00e9cras\u00e9es.<\/p>\n<p>Cette solution de modification n&rsquo;est donc possible que si vous \u00eates s\u00fbr de la s\u00e9curit\u00e9 du th\u00e8me et uniquement si vous ne souhaitez pas effectuer de mise \u00e0 jour. Autant vous dire que ce n&rsquo;est donc pas la meilleure des solutions.<\/p>\n<h3 lang=\"en\">Child Theme<\/h3>\n<p>La seconde solution, de loin ma pr\u00e9f\u00e9r\u00e9e : cr\u00e9er un th\u00e8me enfant.<br \/>\nLa cr\u00e9ation d&rsquo;un th\u00e8me enfant n&rsquo;est pas tr\u00e8s complexe et permet de b\u00e9n\u00e9ficier du th\u00e8me parent tout en autorisant la modification de certains fichiers \u00e0 partir du th\u00e8me enfant.<br \/>\nSa cr\u00e9ation se r\u00e9sume en quelques \u00e9tapes seulement :<\/p>\n<ol>\n<li>Cr\u00e9er un dossier de th\u00e8me<\/li>\n<li>D\u00e9finir le th\u00e8me de r\u00e9f\u00e9rence<\/li>\n<li>Modifier le th\u00e8me \u00e0 partir du th\u00e8me enfant<\/li>\n<\/ol>\n<p>Voyons cela en d\u00e9tail avec des exemples concrets.<\/p>\n<h2>Child theme <em lang=\"en\">\u00ab\u00a0Little Twenty\u00a0\u00bb<\/em><\/h2>\n<p>Nous allons cr\u00e9er un th\u00e8me enfant \u00e0 partir du th\u00e8me Twenty Eleven, nous l&rsquo;appellerons <em lang=\"en\">Little Twenty<\/em> (ou <abbr title=\"Little Twenty\">LT<\/abbr>)<\/p>\n<h3>Cr\u00e9ation du dossier de th\u00e8me<\/h3>\n<p>Le dossier du th\u00e8me enfant se met avec les autres dossiers dans <code>wp-content\/themes\/<\/code>. Cr\u00e9ez un dossier nomm\u00e9 <code>little-twenty<\/code>.<br \/>\nDans ce dossier, cr\u00e9ez un fichier <code>style.css<\/code> avec comme contenu de base :<\/p>\n<pre class=\"code\"><code class=\"language-css css\">\/*\r\nTheme Name: Little Twenty\r\nDescription: Th\u00e8me enfant de Twenty Eleven\r\nAuthor: Geoffrey Crofte\r\nAuthor URI: https:\/\/geoffreycrofte.com\r\nVersion: 1.0.0\r\nTemplate: twentyeleven\r\n*\/<\/code><\/pre>\n<p>Ce morceau est relativement clair, la premi\u00e8re ligne d\u00e9finit le nom visible de votre th\u00e8me, la seconde une description, la troisi\u00e8me le nom de l&rsquo;auteur, la quatri\u00e8me son URL et la cinqui\u00e8me le num\u00e9ro de version de votre th\u00e8me enfant. Toutes ces lignes servent de descriptif qui s&rsquo;affichera dans l&rsquo;espace d&rsquo;administration (<code>Apparence &gt; Th\u00e8mes<\/code>), vous \u00eates relativement libres sur le contenu \u00e0 renseigner.<br \/>\nLe morceau le plus important est le dernier qui est le \u00ab\u00a0slug\u00a0\u00bb du th\u00e8me de r\u00e9f\u00e9rence, le th\u00e8me parent. Ce slug correspond au nom du dossier du th\u00e8me que l&rsquo;on souhaite modifier, ici Twenty Eleven, qui porte comme nom de dossier \u00ab\u00a0twentyeleven\u00a0\u00bb.<\/p>\n<p>Une fois que vous avez cela, vous avez cr\u00e9\u00e9 votre <em lang=\"en\">Child Theme<\/em> qui apparait d\u00e9j\u00e0 dans la liste des th\u00e8mes disponibles depuis votre back-office.<\/p>\n<figure id=\"attachment_2964\" aria-labelledby=\"figcaption_attachment_2964\" class=\"wp-caption aligncenter\" style=\"width: 610px\"><img decoding=\"async\" class=\"size-full wp-image-2964\" title=\"\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/09\/child-theme-appearance.png\" alt=\"\" width=\"600\" height=\"401\" srcset=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/09\/child-theme-appearance.png 600w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/09\/child-theme-appearance-300x200.png 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><figcaption id=\"figcaption_attachment_2964\" class=\"wp-caption-text\">Apparition du th\u00e8me enfant dans Apparance &gt; Th\u00e8mes de l&rsquo;espace d&rsquo;admin<\/figcaption><\/figure>\n<p><strong>Vous pouvez d&rsquo;ores et d\u00e9j\u00e0 l&rsquo;activer<\/strong>, celui-ci va simplement adopter le comportement de son th\u00e8me parent, puisque nous n&rsquo;avons encore aucun fichier \u00ab\u00a0template\u00a0\u00bb dans notre dossier de th\u00e8me.<br \/>\nPetit hic cependant, la feuille de styles du th\u00e8me enfant remplace d\u00e9j\u00e0 celle du th\u00e8me parent. Deux solutions s&rsquo;offrent ici \u00e0 vous : copier le contenu de <code>style.css<\/code> de TwentyEleven pour le coller dans votre CSS du th\u00e8me LT, ou cr\u00e9er un import en CSS avec la r\u00e8gle suivante :<\/p>\n<pre class=\"code\"><code class=\"language-css\">@import url(\"..\/twentyeleven\/style.css\");<\/code><\/pre>\n<p>\u00c0 placer \u00e0 la suite des quelques lignes vues pr\u00e9c\u00e9demment.<br \/>\nPour des raisons de performance je conseillerais plut\u00f4t la premi\u00e8re solution (c&rsquo;est \u00e0 dire la copie du contenu de la feuille de styles du th\u00e8me parent), qui vous permettra m\u00eame de modifier la CSS en cas de besoin.<\/p>\n<h3>Modification des templates<\/h3>\n<p>Il vous est d\u00e9sormais possible d&rsquo;\u00e9diter les portions du templates parent comme bon vous semble. Comment\u00a0? Simplement en copiant le fichier \u00e0 modifier depuis le th\u00e8me parent, et en le collant dans votre th\u00e8me enfant.<br \/>\nD\u00e9sormais les modifications \u00e0 apporter se feront sur les fichiers que vous copierez depuis le th\u00e8me parent.<br \/>\nPrenons un exemple.<\/p>\n<p>Copiez le fichier <code>header.php<\/code> du th\u00e8me parent (TwentyEleven, pour rappel), puis collez-le dans votre th\u00e8me enfant.<br \/>\nVous avez maintenant dans votre dossier la feuille de style, et ce fichier <code>header.php<\/code>.<br \/>\nOuvrez le fichier <code>header.php<\/code> pour \u00e9dition et remplacez<\/p>\n<pre class=\"code\"><code class=\"language-php\">&lt;h2 id=\"site-description\"&gt;&lt;?php bloginfo( 'description' ); ?&gt;&lt;\/h2&gt;<\/code><\/pre>\n<p>par<\/p>\n<pre class=\"code\"><code class=\"language-php\">&lt;p id=\"site-description\"&gt;&lt;?php bloginfo( 'description' ); ?&gt;&lt;\/p&gt;<\/code><\/pre>\n<p>Le remplacement de <code>h2<\/code> par <code>p<\/code> n&rsquo;aura aucune incidence visuelle, par contre vous constaterez que le code a bel et bien chang\u00e9.<\/p>\n<h3>Modifications des autres fichiers (images, JS, CSS, etc.)<\/h3>\n<p><img decoding=\"async\" class=\"noborder alignleft size-full wp-image-3049\" title=\"\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/10\/document-louche.png\" alt=\"\" width=\"128\" height=\"128\" srcset=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/10\/document-louche.png 128w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/10\/document-louche-100x100.png 100w\" sizes=\"(max-width: 128px) 100vw, 128px\" \/>Vous en avez fait l&rsquo;exp\u00e9rience avec le fichier <code>style.css<\/code> : cr\u00e9er un fichier dans votre th\u00e8me enfant qui porte le m\u00eame nom qu&rsquo;un fichier pr\u00e9sent dans le th\u00e8me parent vous permet de remplacer ce dernier.<\/p>\n<p>Par exemple, vous souhaitez modifier le fichier <code>images\/search.png<\/code> qui repr\u00e9sente la loupe pr\u00e9sente dans les champs de recherche du th\u00e8me parent. Cr\u00e9ez le dossier <code>images<\/code> dans <abbr>LT<\/abbr>, puis placez-y une image <code>search.png<\/code>. (prenez une ic\u00f4ne sur le web pour effectuer le test, si \u00e7a vous dit)<br \/>\nL&rsquo;autre possibilit\u00e9 aurait \u00e9t\u00e9 d&rsquo;\u00e9craser le style CSS appliqu\u00e9 \u00e0 ce type de champ de formulaire, puisque cette image est plac\u00e9e en <code>background-image<\/code>.<\/p>\n<p>Chacun des fichiers du th\u00e8me parent est donc \u00e9ditable de la sorte.<\/p>\n<h3>Ajout de templates, d&rsquo;images, styles, etc.<\/h3>\n<p>L&rsquo;<strong>ajout de template<\/strong> est possible : comme vous le feriez pour un th\u00e8me parent, cr\u00e9er simplement votre template dans le th\u00e8me enfant. En respectant la <a href=\"http:\/\/codex.wordpress.org\/images\/1\/18\/Template_Hierarchy.png\">hi\u00e9rarchie des templates de WordPress<\/a>, vous pouvez par exemple cr\u00e9er une page sp\u00e9cifique pour l&rsquo;auteur dont l&rsquo;identifiant est 2 en cr\u00e9ant le fichier <code>author-2.php<\/code> \u00e0 la racine de votre th\u00e8me.<\/p>\n<p>L&rsquo;<strong>ajout d&rsquo;image<\/strong> se fait comme vous le feriez pour n&rsquo;importe quel projet, cr\u00e9ez votre image, dans n&rsquo;importe quel dossier, puis appelez l\u00e0 dans votre th\u00e8me (via CSS) ou dans votre code HTML.<\/p>\n<p><strong>Attention\u00a0!<\/strong> Lorsque vous cherchez \u00e0 ins\u00e9rer une nouvelle image, le code suivant ne fonctionne plus :<\/p>\n<pre class=\"code\"><code class=\"language-markup\">&lt;img src=\"&lt;?php bloginfo('template_directory'); ?&gt;\/img\/mon-image.jpg\" \/&gt;<\/code><\/pre>\n<p>En effet, la valeur \u00ab\u00a0<code>template_directory<\/code>\u00a0\u00bb de <code>bloginfo()<\/code> retourne le dossier du th\u00e8me parent : <code>http:\/\/domain.tld\/wp-content\/themes\/twentyeleven<\/code><br \/>\n\u00c0 la place, utilisez la fonction : <code><a href=\"http:\/\/codex.wordpress.org\/Function_Reference\/get_stylesheet_directory_uri\">get_stylesheet_directory_uri();<\/a><\/code><br \/>\nCette fonction retourne le dossier du th\u00e8me enfant : <code>http:\/\/domain.tld\/wp-content\/themes\/little-twenty<\/code>.<\/p>\n<p>L&rsquo;ajout de feuille de styles ou JavaScript se fait de la m\u00eame mani\u00e8re que les images : nommez vos fichiers de la m\u00eame mani\u00e8re que ceux du th\u00e8me parent pour les \u00e9craser, ou chargez-en de nouveaux dans vos templates avec les fonctions <a href=\"http:\/\/codex.wordpress.org\/Function_Reference\/wp_register_style\"><code>wp_register_style()<\/code><\/a> et <a href=\"http:\/\/codex.wordpress.org\/Function_Reference\/wp_register_script\"><code>wp_register_script()<\/code><\/a>. Je vous laisse consulter la documentation pour plus de d\u00e9tails.<\/p>\n<h3>Les fichiers sp\u00e9ciaux<\/h3>\n<p><img decoding=\"async\" class=\"noborder alignleft size-full wp-image-3051\" title=\"\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/10\/fichier-speciaux.png\" alt=\"\" width=\"128\" height=\"128\" srcset=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/10\/fichier-speciaux.png 128w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/10\/fichier-speciaux-100x100.png 100w\" sizes=\"(max-width: 128px) 100vw, 128px\" \/>J&rsquo;entends par fichiers sp\u00e9ciaux, les fichiers qui n&rsquo;ont pas tout \u00e0 fait le m\u00eame comportement que les pr\u00e9c\u00e9dents.<\/p>\n<h4>Le fichier <code>screenshot.png<\/code><\/h4>\n<p>Ce fichier permet d&rsquo;afficher un aper\u00e7u du th\u00e8me dans l&rsquo;administration. C&rsquo;est un fichier PNG de 300 pixels de large et 225 de hauteur.<br \/>\nCe fichier n&rsquo;est pas charg\u00e9 depuis le th\u00e8me parent, il vous faudra donc le cr\u00e9er pour votre th\u00e8me enfant.<\/p>\n<h4>Le fichier <code>functions.php<\/code><\/h4>\n<p>Le fichier <code>functions.php<\/code> ne fonctionne pas sur le principe des templates. En effet lorsque vous cr\u00e9ez un fichier <code>functions.php<\/code> pour votre th\u00e8me enfant, celui est charg\u00e9 en premier, puis le m\u00eame fichier du th\u00e8me parent est charg\u00e9 par la suite.<br \/>\nLes deux fichiers <code>functions.php<\/code> sont donc charg\u00e9s l&rsquo;un apr\u00e8s l&rsquo;autre, th\u00e8me enfant, puis th\u00e8me parent.<\/p>\n<p>De cette logique d\u00e9coule une probl\u00e9matique que vous finirez par rencontrer : \u00ab\u00a0Cannot redeclare function_name() (previously declared in [\u2026])\u00a0\u00bb.<br \/>\nEn effet, PHP ne permet pas de d\u00e9clarer deux fois une fonction portant le m\u00eame nom, ce qui provoque une erreur.<\/p>\n<p>Faisons un essai et analysons-le (attention, faites \u00e7a en local, on va cr\u00e9er un conflit) :<\/p>\n<ul>\n<li>Dans votre child theme LT, cr\u00e9ez le fichier <code>functions.php<\/code><\/li>\n<li>Entrez le code suivant, qui permet de red\u00e9finir le nombre de mots de l&rsquo;extrait d&rsquo;article\n<pre class=\"code\"><code class=\"language-php\">&lt;?php \r\nfunction twentyeleven_excerpt_length( $length ) {\r\n\treturn 50;\r\n}\r\nadd_filter( 'excerpt_length', 'twentyeleven_excerpt_length' );\r\n?&gt;<\/code><\/pre>\n<\/li>\n<li>Rechargez la page d&rsquo;accueil du votre site, une erreur PHP apparait.<\/li>\n<\/ul>\n<p>Nous venons de d\u00e9finir la fonction <code>twentyeleven_excerpt_length<\/code>, soit parce qu&rsquo;on a accidentellement utilis\u00e9 le m\u00eame nom de fonction, soit parce qu&rsquo;on voulait \u00e9craser l&rsquo;effet de la fonction du th\u00e8me parent. Sauf que cette fonction est d\u00e9clar\u00e9e deux fois par deux fichiers <code>functions.php<\/code> diff\u00e9rents.<br \/>\nVoici ce qui se passe :<\/p>\n<ol>\n<li>le fichier <code>functions.php<\/code> de LT (le th\u00e8me enfant) est lu<\/li>\n<li><code>twentyeleven_excerpt_length<\/code> est d\u00e9clar\u00e9e pour la premi\u00e8re fois<\/li>\n<li>le fichier <code>functions.php<\/code> de TwentyElevent (le th\u00e8me parent) est lu<\/li>\n<li><code>twentyeleven_excerpt_length<\/code> est d\u00e9clar\u00e9e pour la seconde fois<\/li>\n<li>PHP ne comprend pas : Paf\u00a0! Erreur\u00a0!<\/li>\n<\/ol>\n<p>Comment \u00e9viter ce probl\u00e8me\u00a0?<\/p>\n<p>En utilisant la fonction <a href=\"http:\/\/php.net\/manual\/en\/function.function-exists.php\"><code>function_exists()<\/code><\/a> de PHP. En contr\u00f4lant si la fonction existe d\u00e9j\u00e0, on peut d\u00e9clarer conditionnellement une fonction.<\/p>\n<pre class=\"code\"><code class=\"language-php\">&lt;?php \r\nif ( !function_exists('twentyeleven_excerpt_length')) {\r\n   function twentyeleven_excerpt_length( $length ) {\r\n      return 50;\r\n   }\r\n   add_filter( 'excerpt_length', 'twentyeleven_excerpt_length' );\r\n}\r\n?&gt;<\/code><\/pre>\n<p>\u00ab\u00a0Si la fonction <code>twentyeleven_excerpt_length<\/code> n&rsquo;existe pas, alors on la d\u00e9clare.\u00a0\u00bb<\/p>\n<p>Ok pour le principe, mais c&rsquo;est sur le th\u00e8me parent qu&rsquo;il faut faire cette manipulation, or on a dit pr\u00e9c\u00e9demment qu&rsquo;on s&rsquo;interdisait \u00e0 modifier sauvagement le th\u00e8me parent.<br \/>\nOn est bloqu\u00e9\u00a0! <strong>Le th\u00e8me parent est mal construit\u00a0!<\/strong><\/p>\n<p>Il ne vous reste plus qu&rsquo;\u00e0 pr\u00e9venir l&rsquo;auteur du th\u00e8me qu&rsquo;il a mal pens\u00e9 son code.<\/p>\n<p>Cependant, WordPress pr\u00e9voit quelque chose : chaque fonction cr\u00e9\u00e9e et li\u00e9e \u00e0 un hook est consid\u00e9r\u00e9e comme une \u00ab\u00a0action\u00a0\u00bb sur ce hook, il est donc possible de retirer ces actions.<br \/>\nVoici un code type qui reprend notre exemple pr\u00e9c\u00e9dent :<\/p>\n<pre class=\"code\"><code class=\"language-php\">&lt;?php\r\nadd_action('after_setup_theme','remove_parent_functions');\r\nfunction remove_parent_functions() {\r\n   remove_action('excerpt_length','twentyeleven_excerpt_length');\r\n   add_action('excerpt_length','new_twentyeleven_excerpt_length');\r\n}\r\n \r\nfunction new_twentyeleven_excerpt_length($length){\r\n   return 75;\r\n}\r\nadd_filter('excerpt_length', 'new_twentyeleven_excerpt_length');\r\n<\/code><\/pre>\n<p>Il reste impossible d&rsquo;utiliser le m\u00eame nom de fonction, cependant nous avons supprimer l&rsquo;action de la fonction initiale.<br \/>\nCela reste un petit bidouillage malgr\u00e9 tout.<br \/>\nMerci \u00e0 <a href=\"http:\/\/tweetpress.fr\/codewp\/personnaliser-un-theme-wordpress-avec-un-child-theme\/\">Julien et son article<\/a> pour cette derni\u00e8re astuce !<\/p>\n<p class=\"note message\">D\u00e9veloppeurs de th\u00e8me, pensez \u00e0 contr\u00f4ler l&rsquo;existence des fonctions avant de les d\u00e9clarer ! Merci.<\/p>\n<h2>R\u00e9sumons en quelques points<\/h2>\n<p>Pour modifier un th\u00e8me, vous devez dans l&rsquo;id\u00e9al :<\/p>\n<ul>\n<li>Cr\u00e9er un th\u00e8me enfant<\/li>\n<li>\u00c9craser les templates, images, scripts et CSS en cr\u00e9ant des fichiers de m\u00eames noms que le th\u00e8me parent dans le dossier du th\u00e8me enfant<\/li>\n<li>Ajouter autant de templates, script, CSS ou images que je le souhaite, mais :\n<ul>\n<li>utiliser <code>bloginfo('stylesheet_directory')<\/code> pour appeler mes fichiers<\/li>\n<li>Penser \u00e0 utiliser <code>wp_register_style()<\/code> et <code>wp_register_scripts()<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Penser aux fichiers sp\u00e9ciaux\n<ul>\n<li>screenshot.png : pour ajouter un aper\u00e7u de votre th\u00e8me au back-office<\/li>\n<li>functions.php : les deux fichiers (th\u00e8me parent et th\u00e8me enfant) sont charg\u00e9s<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Pour ne pas avoir \u00e9t\u00e9 beaucoup plus loin dans l&rsquo;exploration des th\u00e8mes, je vais m&rsquo;arr\u00eater l\u00e0, mais n&rsquo;h\u00e9sitez pas \u00e0 apporter votre expertise ou toute information compl\u00e9mentaire afin de corriger ou compl\u00e9ter cet article.<br \/>\nMerci \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Les th\u00e8mes WordPress sont de plus en plus courus par tous : d\u00e9butants, blogueurs confirm\u00e9s ou professionnels du web. Il est possible d&rsquo;en obtenir gratuitement un peu partout sur la toile, pas toujours de bonne qualit\u00e9, pas toujours tr\u00e8s s\u00e9curis\u00e9s, comme il est possible d&rsquo;en obtenir de payants (je n&rsquo;ai pas dit qu&rsquo;ils \u00e9taient mieux). [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":3037,"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":[9,13],"tags":[228,497,470,15],"coauthors":[597],"class_list":["post-2925","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriels","category-wordpress","tag-astuce","tag-child-theme","tag-theme","tag-tutoriel"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Les th\u00e8mes WordPress sont de plus en plus courus par tous : d\u00e9butants, blogueurs confirm\u00e9s ou professionnels du web. Il est possible d&#039;en obtenir gratuitement un peu partout sur la toile, pas toujours de bonne qualit\u00e9, pas toujours tr\u00e8s s\u00e9curis\u00e9s, comme il est possible d&#039;en obtenir de payants (je n&#039;ai pas dit qu&#039;ils \u00e9taient mieux).\" \/>\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,child theme,th\u00e8me,tutoriel,tutoriels,wordpress\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/wordpress-personnaliser-un-theme-avec-child-theme-enfant\" \/>\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\\\/tutoriels\\\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#article\",\"name\":\"WordPress \\u2013 Personnaliser un th\\u00e8me ? Oui, avec un child theme\",\"headline\":\"WordPress \\u2013 Personnaliser un th\\u00e8me ? Oui, avec un child theme\",\"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\\\/10\\\/wordpress-child-theme.png\",\"width\":100,\"height\":100},\"datePublished\":\"2012-10-03T08:54:01+02:00\",\"dateModified\":\"2024-01-31T16:46:33+01:00\",\"inLanguage\":\"fr-FR\",\"commentCount\":115,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/tutoriels\\\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/tutoriels\\\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#webpage\"},\"articleSection\":\"Tutoriels, WordPress, astuce, child theme, th\\u00e8me, tutoriel, Optional, CreativeJuiz\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/tutoriels\\\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#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\\\/tutoriels#listItem\",\"name\":\"Tutoriels\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/theme\\\/tutoriels#listItem\",\"position\":2,\"name\":\"Tutoriels\",\"item\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/theme\\\/tutoriels\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/tutoriels\\\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#listItem\",\"name\":\"WordPress \\u2013 Personnaliser un th\\u00e8me ? Oui, avec un child theme\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog#listItem\",\"name\":\"Accueil\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/tutoriels\\\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#listItem\",\"position\":3,\"name\":\"WordPress \\u2013 Personnaliser un th\\u00e8me ? Oui, avec un child theme\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/theme\\\/tutoriels#listItem\",\"name\":\"Tutoriels\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/#person\",\"name\":\"Geoffrey Crofte\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/tutoriels\\\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#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\\\/tutoriels\\\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#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\\\/tutoriels\\\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#webpage\",\"url\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/tutoriels\\\/wordpress-personnaliser-un-theme-avec-child-theme-enfant\",\"name\":\"WordPress \\u2013 Personnaliser un th\\u00e8me ? Oui, avec un child theme\",\"description\":\"Les th\\u00e8mes WordPress sont de plus en plus courus par tous : d\\u00e9butants, blogueurs confirm\\u00e9s ou professionnels du web. Il est possible d'en obtenir gratuitement un peu partout sur la toile, pas toujours de bonne qualit\\u00e9, pas toujours tr\\u00e8s s\\u00e9curis\\u00e9s, comme il est possible d'en obtenir de payants (je n'ai pas dit qu'ils \\u00e9taient mieux).\",\"inLanguage\":\"fr-FR\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/tutoriels\\\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#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\\\/10\\\/wordpress-child-theme.png\",\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/tutoriels\\\/wordpress-personnaliser-un-theme-avec-child-theme-enfant\\\/#mainImage\",\"width\":100,\"height\":100},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.creativejuiz.fr\\\/blog\\\/tutoriels\\\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#mainImage\"},\"datePublished\":\"2012-10-03T08:54:01+02:00\",\"dateModified\":\"2024-01-31T16:46:33+01: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 Personnaliser un th\u00e8me ? Oui, avec un child theme","description":"Les th\u00e8mes WordPress sont de plus en plus courus par tous : d\u00e9butants, blogueurs confirm\u00e9s ou professionnels du web. Il est possible d'en obtenir gratuitement un peu partout sur la toile, pas toujours de bonne qualit\u00e9, pas toujours tr\u00e8s s\u00e9curis\u00e9s, comme il est possible d'en obtenir de payants (je n'ai pas dit qu'ils \u00e9taient mieux).","canonical_url":"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/wordpress-personnaliser-un-theme-avec-child-theme-enfant","robots":"max-image-preview:large","keywords":"astuce,child theme,th\u00e8me,tutoriel,tutoriels,wordpress","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#article","name":"WordPress \u2013 Personnaliser un th\u00e8me ? Oui, avec un child theme","headline":"WordPress \u2013 Personnaliser un th\u00e8me ? Oui, avec un child theme","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\/10\/wordpress-child-theme.png","width":100,"height":100},"datePublished":"2012-10-03T08:54:01+02:00","dateModified":"2024-01-31T16:46:33+01:00","inLanguage":"fr-FR","commentCount":115,"mainEntityOfPage":{"@id":"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#webpage"},"isPartOf":{"@id":"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#webpage"},"articleSection":"Tutoriels, WordPress, astuce, child theme, th\u00e8me, tutoriel, Optional, CreativeJuiz"},{"@type":"BreadcrumbList","@id":"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#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\/tutoriels#listItem","name":"Tutoriels"}},{"@type":"ListItem","@id":"https:\/\/www.creativejuiz.fr\/blog\/theme\/tutoriels#listItem","position":2,"name":"Tutoriels","item":"https:\/\/www.creativejuiz.fr\/blog\/theme\/tutoriels","nextItem":{"@type":"ListItem","@id":"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#listItem","name":"WordPress \u2013 Personnaliser un th\u00e8me ? Oui, avec un child theme"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.creativejuiz.fr\/blog#listItem","name":"Accueil"}},{"@type":"ListItem","@id":"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#listItem","position":3,"name":"WordPress \u2013 Personnaliser un th\u00e8me ? Oui, avec un child theme","previousItem":{"@type":"ListItem","@id":"https:\/\/www.creativejuiz.fr\/blog\/theme\/tutoriels#listItem","name":"Tutoriels"}}]},{"@type":"Person","@id":"https:\/\/www.creativejuiz.fr\/blog\/#person","name":"Geoffrey Crofte","image":{"@type":"ImageObject","@id":"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#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\/tutoriels\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#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\/tutoriels\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#webpage","url":"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/wordpress-personnaliser-un-theme-avec-child-theme-enfant","name":"WordPress \u2013 Personnaliser un th\u00e8me ? Oui, avec un child theme","description":"Les th\u00e8mes WordPress sont de plus en plus courus par tous : d\u00e9butants, blogueurs confirm\u00e9s ou professionnels du web. Il est possible d'en obtenir gratuitement un peu partout sur la toile, pas toujours de bonne qualit\u00e9, pas toujours tr\u00e8s s\u00e9curis\u00e9s, comme il est possible d'en obtenir de payants (je n'ai pas dit qu'ils \u00e9taient mieux).","inLanguage":"fr-FR","isPartOf":{"@id":"https:\/\/www.creativejuiz.fr\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#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\/10\/wordpress-child-theme.png","@id":"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/wordpress-personnaliser-un-theme-avec-child-theme-enfant\/#mainImage","width":100,"height":100},"primaryImageOfPage":{"@id":"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/wordpress-personnaliser-un-theme-avec-child-theme-enfant#mainImage"},"datePublished":"2012-10-03T08:54:01+02:00","dateModified":"2024-01-31T16:46:33+01: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":"2925","title":null,"description":null,"keywords":[],"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"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":"","og_custom_url":null,"og_article_section":null,"og_article_tags":[],"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":"Article","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":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-21 17:18:18","updated":"2025-07-09 23:27:56","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\/2925","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=2925"}],"version-history":[{"count":1,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/2925\/revisions"}],"predecessor-version":[{"id":8583,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/2925\/revisions\/8583"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media\/3037"}],"wp:attachment":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media?parent=2925"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/categories?post=2925"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/tags?post=2925"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/coauthors?post=2925"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}