{"id":234248,"date":"2023-02-21T13:37:00","date_gmt":"2023-02-21T10:37:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=234248"},"modified":"2022-11-12T02:04:35","modified_gmt":"2022-11-11T23:04:35","slug":"tutoriel-sur-le-theme-wordpress-pour-les-debutants-partie-7-configuration-du-theme-et-images-en-vedette","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/tutoriel-sur-le-theme-wordpress-pour-les-debutants-partie-7-configuration-du-theme-et-images-en-vedette\/","title":{"rendered":"Tutoriel sur le th\u00e8me WordPress pour les d\u00e9butants \u2013 Partie 7 : Configuration du th\u00e8me et images en vedette"},"content":{"rendered":"\n<p>Cette le\u00e7on du didacticiel sur le th\u00e8me WordPress pour les d\u00e9butants se poursuit en ajoutant le code de base requis pour la configuration du th\u00e8me. Nous apprenons \u00e0 ajouter des supports de th\u00e8me, et \u00e0 la suite de cela, la fonctionnalit\u00e9 d&rsquo;image en vedette de WordPress est activ\u00e9e. Dans cette le\u00e7on, nous corrigerons \u00e9galement le titre de la page d&rsquo;accueil en appliquant notre premier filtre.<\/p>\n<p>Nous travaillerons principalement dans <code>functions.php<\/code>le fichier que nous avons ajout\u00e9 dans la <a href=\"http:\/\/awhitepixel.com\/blog\/wordpress-theme-tutorial-for-beginners-part-6-a-themes-functions-file\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">le\u00e7on pr\u00e9c\u00e9dente<\/a>. \u00c0 la fin, nous ajouterons du code pour g\u00e9n\u00e9rer des images en vedette dans nos mod\u00e8les.<\/p>\n<h2>Configuration du th\u00e8me<\/h2>\n<p>Tous les th\u00e8mes ont besoin de code pour le configurer en disant \u00e0 WordPress d&rsquo;activer certaines fonctionnalit\u00e9s. Cela inclut l&rsquo;activation des menus, des widgets, de la traduction, etc. Cela se fait g\u00e9n\u00e9ralement dans une &quot;fonction de th\u00e8me de configuration&quot;, g\u00e9n\u00e9ralement accroch\u00e9e \u00e0 un crochet nomm\u00e9 de mani\u00e8re pratique <code>after_setup_theme<\/code>. Pour certaines choses sp\u00e9cifiques, nous devons utiliser le crochet d&rsquo;initialisation de WordPress appel\u00e9 <code>init<\/code>.<\/p>\n<h3>\u00c9crire le code de configuration de th\u00e8me n\u00e9cessaire pour<code>after_setup_theme<\/code><\/h3>\n<p>Configurons une telle &quot;fonction de th\u00e8me de configuration&quot; dans notre <code>functions.php<\/code>, accroch\u00e9e \u00e0<code>after_setup_theme<\/code>\u00a0:<\/p>\n<pre><code>add_action('after_setup_theme', 'wptutorial_setup_theme');\nfunction wptutorial_setup_theme() {\n\u00a0\n}<\/code><\/pre>\n<p>Dans cette fonction, nous ajouterons un tas de fonctions de configuration communes et utiles pour les th\u00e8mes WordPress. Veuillez placer tous les morceaux de code suivants dans votre fonction de configuration.<\/p>\n<p>Nous devons d&rsquo;abord d\u00e9finir une largeur maximale d&rsquo;images et d&rsquo;int\u00e9grations (telles que des vid\u00e9os). Cela garantit que lorsque les auteurs ins\u00e8rent de grandes images dans les publications, les images restent dans une certaine largeur. Je l&rsquo;ai r\u00e9gl\u00e9 sur 840 pixels (parce que je veux de la place pour la barre lat\u00e9rale), mais vous pouvez l&rsquo;ajuster \u00e0 votre guise.<\/p>\n<pre><code>$GLOBALS['content_width'] = 840;<\/code><\/pre>\n<p>Nous devons \u00e9galement informer WordPress que le th\u00e8me est traduisible et o\u00f9 il peut rechercher des fichiers de traduction. J&rsquo;entrerai dans la traduction du th\u00e8me WordPress en d\u00e9tail \u00e0 <a href=\"http:\/\/awhitepixel.com\/blog\/wordpress-theme-tutorial-for-beginners-part-8-translation-of-your-theme\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">l&rsquo;\u00e9tape suivante<\/a> de cette s\u00e9rie de didacticiels sur le th\u00e8me.<\/p>\n<pre><code>load_theme_textdomain('wptutorial', get_stylesheet_directory(). '\/lang');<\/code><\/pre>\n<p>Notez l&rsquo;utilisation d&rsquo;une nouvelle fonction pour r\u00e9cup\u00e9rer votre r\u00e9pertoire de th\u00e8mes, <code>get_stylesheet_directory()<\/code>. Ceci est tr\u00e8s similaire \u00e0 <code>get_stylesheet_directory_uri()<\/code>ce que nous avons rencontr\u00e9 \u00e0 la derni\u00e8re \u00e9tape, mais ici nous avons besoin du chemin relatif, pas de l&rsquo;URL.<\/p>\n<p>Ensuite, nous devons ajouter des &quot;supports de th\u00e8me&quot;, qui activent la fonctionnalit\u00e9 WordPress qui n&rsquo;est pas activ\u00e9e par d\u00e9faut.<\/p>\n<pre><code>add_theme_support('automatic-feed-links');\nadd_theme_support('post-thumbnails');\nadd_theme_support('html5', [\n    'search-form',\n    'comment-form',\n    'comment-list',\n    'gallery',\n    'caption',\n]);\nadd_theme_support('custom-logo', [\n    'height'      =&gt; 100,\n    'width'       =&gt; 300,\n    'flex-width'  =&gt; true,\n    'flex-height' =&gt; false,\n]);\nadd_theme_support('customize-selective-refresh-widgets');<\/code><\/pre>\n<p>C&rsquo;\u00e9tait tout un tas d&rsquo; <code>add_theme_support<\/code>appels! Comme son nom l&rsquo;indique, <code>add_theme_support<\/code>indique \u00e0 WordPress d&rsquo;activer des fonctionnalit\u00e9s qui ne sont pas activ\u00e9es par d\u00e9faut. Par exemple, les images en vedette (&quot;post-vignettes&quot;), la prise en charge des balises HTML5 et la fonctionnalit\u00e9 de logo personnalis\u00e9 de WordPress dans Customizer (ajustez l&rsquo;image de logo souhait\u00e9e si vous le souhaitez !).<\/p>\n<p>Il existe de nombreuses autres fonctionnalit\u00e9s int\u00e9ressantes, je vous encourage donc \u00e0 parcourir la <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_theme_support\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentation de add_theme_support<\/a>. Par exemple, il y en a une assez nouvelle, <code>title-tag<\/code>, qui g\u00e8re la balise de titre. Je l&rsquo;ai laiss\u00e9 de c\u00f4t\u00e9 dans ce tutoriel car nous avons d\u00e9j\u00e0 ajout\u00e9 la balise de titre <code>header.php<\/code>manuellement.<\/p>\n<p>Gardez \u00e0 l&rsquo;esprit que si vous ajoutez la prise en charge de <code>title-tag<\/code>, vous devez supprimer la balise de titre de votre fichier d&rsquo;en-t\u00eate pour \u00e9viter d&rsquo;obtenir des balises de titre en double.<\/p>\n<p>Enfin, nous en ajoutons quelques-uns <code>add_theme_support<\/code>pour le nouveau Gutenberg dans WordPress. Nous ajouterons la prise en charge des sections larges, en activant la fonctionnalit\u00e9 des styles de bloc et la prise en charge des int\u00e9grations r\u00e9actives\u00a0:<\/p>\n<pre><code>add_theme_support('wp-block-styles');\nadd_theme_support('align-wide');\nadd_theme_support('responsive-embeds');<\/code><\/pre>\n<h3>Le r\u00e9sultat final<\/h3>\n<p>Voici la fonction de configuration finale dans notre <code>functions.php<\/code>:<\/p>\n<pre><code>add_action('after_setup_theme', 'wptutorial_setup_theme');\nfunction wptutorial_setup_theme() {\n    $GLOBALS['content_width'] = 840;\n    \/\/ Make your theme ready for translation\n    load_theme_textdomain('wptutorial', get_stylesheet_directory(). '\/lang');\n    \/\/ Add theme support for WordPress functionality\n    add_theme_support('automatic-feed-links');\n    add_theme_support('title-tag');\n    add_theme_support('post-thumbnails');\n    add_theme_support('html5', [\n        'search-form',\n        'comment-form',\n        'comment-list',\n        'gallery',\n        'caption',\n    ]);\n    add_theme_support('custom-logo', [\n        'height'      =&gt; 100,\n        'width'       =&gt; 300,\n        'flex-width'  =&gt; true,\n        'flex-height' =&gt; false,\n    ]);\n    add_theme_support('customize-selective-refresh-widgets');\n    \/\/ Add theme support for Gutenberg specific functionality\n    add_theme_support('wp-block-styles');\n    add_theme_support('align-wide');\n    add_theme_support('responsive-embeds');\n}<\/code><\/pre>\n<p>Apr\u00e8s avoir enregistr\u00e9, vous devriez maintenant pouvoir ajouter des images en vedette aux publications dans l&rsquo;administration\u00a0! Ajoutons un autre correctif de th\u00e8me dans notre <code>functions.php<\/code>avant d&rsquo;ajouter des images en vedette \u00e0 nos mod\u00e8les\u00a0; rappelez-vous que <code>wp_title<\/code>dans notre <code>header.php<\/code>par d\u00e9faut, vous ne pouvez pas faire \u00e9cho \u00e0 quoi que ce soit sur la page d&rsquo;accueil\u00a0? R\u00e9parons \u00e7a.<\/p>\n<h2>Ajout d&rsquo;un filtre \u00e0<code>wp_title<\/code><\/h2>\n<p>Ajoutons notre premi\u00e8re fonction de modification de filtre appropri\u00e9e, en utilisant <code>add_filter()<\/code>. Le filtre auquel nous allons nous accrocher porte le m\u00eame nom que la fonction que nous avons utilis\u00e9e pour WordPress pour r\u00e9cup\u00e9rer dynamiquement le titre de la page ; <code>wp_title<\/code>. Ce que nous allons corriger, c&rsquo;est de nous assurer que le titre n&rsquo;est pas vide sur la page d&rsquo;accueil &#8211; ce qui est la valeur par d\u00e9faut dans WordPress. Lorsqu&rsquo;il est sur la page d&rsquo;accueil, nous voulons qu&rsquo;il soit rempli avec le nom du site WordPress.<\/p>\n<p>Gardez \u00e0 l&rsquo;esprit de <strong>toujours renvoyer<\/strong> la variable filtr\u00e9e dans vos fonctions de filtrage\u00a0! Tous les filtres modifient une variable, et si vous ne retournez rien, la variable devient ind\u00e9finie. Cela peut causer beaucoup de probl\u00e8mes. Pour plus de d\u00e9tails sur les filtres, jetez un \u0153il \u00e0 mon <a href=\"http:\/\/awhitepixel.com\/blog\/all-about-hooks-in-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">article expliquant tout sur les crochets et les filtres<\/a>.<\/p>\n<h3>Savoir quand personnaliser le titre<\/h3>\n<p>Nous ne voulons personnaliser la variable de titre que si nous sommes sur la page d&rsquo;accueil. Pour toutes les autres pages, nous voulons le laisser tel quel (il suffit de le retourner tel quel). Mais comment savons-nous quand nous sommes en premi\u00e8re page\u00a0?<\/p>\n<p>Nous pouvons tirer parti des <a href=\"https:\/\/codex.wordpress.org\/Conditional_Tags\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">balises conditionnelles<\/a> de WordPress, qui sont tout un tas de fonctions utiles qui renvoient vrai ou faux en fonction d&rsquo;une condition. Ceux-ci sont le plus souvent utilis\u00e9s pour demander si nous sommes sur une certaine page ou un certain mod\u00e8le. Nous pouvons simplement demander \u00ab\u00a0Sommes-nous en premi\u00e8re page\u00a0?\u00a0\u00bb. Si cette m\u00e9thode renvoie vrai, alors seulement nous modifierons la variable de titre.<\/p>\n<p>Il convient de noter qu&rsquo;il existe deux balises conditionnelles pour la page d&rsquo;accueil, \u00e0 savoir <code>is_home()<\/code>et <code>is_front_page().<\/code>Celles-ci diff\u00e8rent en fonction de votre param\u00e8tre &quot;Lecture&quot; &#8211; que votre page d&rsquo;accueil affiche ou non les derniers messages ou qu&rsquo;elle soit d\u00e9finie sur une page fixe. Si vous suivez ce tutoriel avec une toute nouvelle installation WordPress avec le param\u00e8tre par d\u00e9faut, vous utilisez <code>is_front_page()<\/code>.<\/p>\n<h3>Obtenir le nom du site WordPress<\/h3>\n<p>Nous savons maintenant quel filtre utiliser et comment nous assurer de ne changer le titre que si nous sommes au bon endroit. Mais quel doit \u00eatre le titre? Habituellement, le titre de la page d&rsquo;accueil serait le nom de votre site WordPress. Mais comment obtient-on cette information ?<\/p>\n<p>Pour r\u00e9cup\u00e9rer des informations sur l&rsquo;installation actuelle de WordPress, nous utilisons la <code>bloginfo()<\/code>fonction. En param\u00e8tre, nous demandons de renvoyer le nom du site, ce qui se fait en d\u00e9finissant le param\u00e8tre sur &lsquo; <code>name<\/code>&lsquo;. Et comme il s&rsquo;agit d&rsquo;un filtre et que nous devons le renvoyer, et non l&rsquo;\u00e9cho, nous utilisons sa m\u00e9thode s\u0153ur <code>get_bloginfo()<\/code>. L&rsquo;appel <code>bloginfo()<\/code>fera toujours \u00e9cho \u00e0 la sortie.<\/p>\n<pre><code>add_filter('wp_title', 'wptutorial_title_filter');\nfunction wptutorial_title_filter($title) {\n    if (is_front_page()) {\n        return get_bloginfo('name');\n    }\n    return $title;\n}<\/code><\/pre>\n<p>Si vous actualisez votre page d&rsquo;accueil, vous devriez voir que le nom de votre site appara\u00eet dans la <code>&lt;title&gt;<\/code>balise (et dans l&rsquo;onglet du navigateur)\u00a0! Notre filtre n&rsquo;affecte que la page d&rsquo;accueil, de sorte que toutes les autres pages telles que la publication unique doivent toujours renvoyer la m\u00eame chose qu&rsquo;auparavant\u00a0; le titre du poste.<\/p>\n<h2>Sortie d&rsquo;images s\u00e9lectionn\u00e9es dans des fichiers mod\u00e8les<\/h2>\n<p>Plus t\u00f4t, lorsque nous avons configur\u00e9 les supports de th\u00e8me, nous avons ajout\u00e9 le support des images en vedette. Avec cela activ\u00e9, nous pouvons maintenant sortir ces images dans nos mod\u00e8les. Faisons-le maintenant\u00a0!<\/p>\n<p>Ouvrez-les <code>index.php<\/code>et trouvez-leur une place \u00e0 l&rsquo;int\u00e9rieur de la boucle. J&rsquo;ai choisi de le placer apr\u00e8s le titre, mais c&rsquo;est \u00e0 vous de d\u00e9cider o\u00f9 vous les voulez. Vous utilisez la fonction <code>the_post_thumbnail()<\/code>pour produire l&rsquo;image. Il est recommand\u00e9 de v\u00e9rifier d&rsquo;abord si la publication a m\u00eame d\u00e9fini une image en vedette, ce que nous faisons en utilisant <code>has_post_thumbnail()<\/code>.<\/p>\n<pre><code>...\n    &lt;h2&gt;&lt;a href=\"&lt;?php the_permalink(); ?&gt;\" title=\"&lt;?php the_title(); ?&gt;\"&gt;&lt;?php the_title(); ?&gt;&lt;\/a&gt;&lt;\/h2&gt;\n    &lt;?php if (has_post_thumbnail()) {\n        the_post_thumbnail();\n    } ?&gt;\n    &lt;?php the_excerpt(); ?&gt;\n...<\/code><\/pre>\n<p>Si votre message n&rsquo;a pas d&rsquo;image en vedette, vous ne verrez rien sortir apr\u00e8s le titre. Cependant, si vous d\u00e9finissez une image en vedette sur l&rsquo;un de vos messages, <code>the_post_thumbnail()<\/code>une <code>&lt;img&gt;<\/code>balise avec l&rsquo;image choisie sera g\u00e9n\u00e9r\u00e9e. Cette fonction accepte quelques param\u00e8tres suppl\u00e9mentaires. Par exemple, vous pouvez d\u00e9finir la taille d&rsquo;image que vous souhaitez utiliser et contr\u00f4ler les attributs ajout\u00e9s \u00e0 l&rsquo;image. Comme d&rsquo;habitude, je vous encourage \u00e0 jeter un coup d&rsquo;\u0153il rapide \u00e0 la <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/the_post_thumbnail\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentation<\/a> et \u00e0 l&rsquo;ajuster \u00e0 votre guise.<\/p>\n<h2>Documentation sur les m\u00e9thodes utilis\u00e9es<\/h2>\n<ul>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_action\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">add_action<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/load_theme_textdomain\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">load_theme_textdomain<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/get_stylesheet_directory\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_stylesheet_directory<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_theme_support\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">add_theme_support<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_filter\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">add_filter<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/is_front_page\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">is_front_page<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_bloginfo\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_bloginfo<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/has_post_thumbnail\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">a_post_thumbnail<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/the_post_thumbnail\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">the_post_thumbnail<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cette le\u00e7on se poursuit en ajoutant le code de base requis pour configurer un th\u00e8me WordPress. Nous apprenons \u00e0 ajouter des supports th\u00e9matiques et \u00e0 filtrer le titre de la page d&rsquo;accueil.<\/p>\n","protected":false},"author":1,"featured_media":224083,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[893,893,717,717,832,1110,801,801,832,925,925,841,841,862,862],"tags":[1167],"class_list":{"0":"post-234248","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-code-2","9":"category-developpeur","11":"category-guide-pour-les-debutants","12":"category-n-a","13":"category-php-3","16":"category-sujets","18":"category-tutoriels","20":"category-wordpress-3","22":"tag-affiai-fr"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=234248"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234248\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/224083"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=234248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=234248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=234248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}