{"id":723,"date":"2016-04-17T11:32:28","date_gmt":"2016-04-17T09:32:28","guid":{"rendered":"http:\/\/lamartinieredesign.fr\/?page_id=723"},"modified":"2018-04-05T15:40:52","modified_gmt":"2018-04-05T13:40:52","slug":"creer-un-theme-complet-part-4","status":"publish","type":"page","link":"https:\/\/lamartinieredesign.fr\/?page_id=723","title":{"rendered":"Cr\u00e9er un th\u00e8me complet &#8211; part 4"},"content":{"rendered":"<h4>Le fichier functions.php<\/h4>\n<p>C&rsquo;est un fichier tr\u00e8s important, car il va contenir l&rsquo;activation de toutes les fonctionnalit\u00e9s n\u00e9cessaires \u00e0 la bonne marche de votre site. Faites attention cependant car une erreur de code, m\u00eame minime dans ce fichier met votre site \u00e0 plat et plus rien ne fonctionne. Pas de panique cependant, il n&rsquo;est pas tr\u00e8s difficile de revenir dans ce cas \u00e0 un fonctionnement normal.<\/p>\n<p>Il faut donc \u00eatre prudent et faire en sorte notamment qu&rsquo;une fonction ne soit pas d\u00e9clar\u00e9e deux fois, et donc v\u00e9rifier que ce n&rsquo;est pas le cas, par un test PHP. Il faut \u00e9galement choisir des noms de fonction qui soient clairs et vraiment personnalis\u00e9s. C&rsquo;est particuli\u00e8rement valable lorsqu&rsquo;on utilise des th\u00e8mes enfants.<\/p>\n<p>Les principales fonctions \u00e0 activer sont l&rsquo;activation des images \u00e0 la une, la cr\u00e9ation des emplacements de menus, la d\u00e9claration des widgets et des sidebars, et bien d&rsquo;autres, dans la mesure o\u00f9 cela affecte la modification de l&rsquo;affichage du contenu (on ne parle pas ici de CSS, pas de la mise en forme du contenu donc, mais de sa nature). Inspirez-vous des fonctions pr\u00e9sentes dans les th\u00e8mes par d\u00e9faut de WordPress, car le code est g\u00e9n\u00e9ralement bien comment\u00e9.<\/p>\n<p>Le fichier functions.php doit commencer par l&rsquo;ouverture d&rsquo;une balise PHP qu&rsquo;il n&rsquo;est pas n\u00e9cessaire de refermer en fin de fichier :<br \/>\n<code>&lt;?php<\/code>Les noms de fonction qui vont suivre sont \u00e0 votre convenance; ils ne sont pas obligatoires et il est possible de les changer.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Les images \u00e0 la une (thumbnails)<\/strong><\/p>\n<p>Il est possible pour un article d&rsquo;indiquer une image \u00ab\u00a0vedette\u00a0\u00bb, c&rsquo;est le thumbnail, ou image \u00e0 la une. Cela se chisit lors de la r\u00e9daction d&rsquo;un article.<\/p>\n<p>Pour autoriser cela, ajouter au fichier functions.php le code suivant :<br \/>\n<code>add_theme_support( 'post-thumbnails' );<\/code><\/p>\n<p>Ce code est suffisant, bien qu&rsquo;il soit souvent de mise ensuite de d\u00e9finir des tailles d&rsquo;image utilis\u00e9es en attribut de la fonction the_post_thumbnail(). Voir le codex sur ce point :<br \/>\n<code>set_post_thumbnail_size()<\/code> &amp; <code>add_image_size()<\/code><\/p>\n<p><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/add_theme_support\" target=\"_blank\" rel=\"noopener\">https:\/\/codex.wordpress.org\/Function_Reference\/add_theme_support<\/a><br \/>\n<a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/set_post_thumbnail_size\" target=\"_blank\" rel=\"noopener\">https:\/\/codex.wordpress.org\/Function_Reference\/set_post_thumbnail_size<\/a><br \/>\n<a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_image_size\/\" target=\"_blank\" rel=\"noopener\">https:\/\/developer.wordpress.org\/reference\/functions\/add_image_size\/<\/a><\/p>\n<p><strong>L&rsquo;appel \u00e0 la feuille de style<\/strong><\/p>\n<p>Si elle n&rsquo;est pas appel\u00e9e directement depuis le fichier header.php, ce que l&rsquo;on voit de plus en plus dans les th\u00e8mes, il est possible de cr\u00e9er une fonction pour cela :<br \/>\n<code>add_action('wp_enqueue_scripts', 'insert_css_in_head');<\/code><br \/>\n<code>function insert_css_in_head() {<\/code><br \/>\n<code>\u00a0\u00a0 wp_register_style('style', get_bloginfo( 'stylesheet_url' ), '', false, 'screen');<\/code><br \/>\n<code>\u00a0\u00a0 wp_enqueue_style( 'style' );<\/code><br \/>\n<code>\u00a0}<\/code><\/p>\n<p><strong>Param\u00e9trage des extraits de posts<\/strong><\/p>\n<p>Lorsqu&rsquo;on choisit sur la page index ou une page d&rsquo;articles, d&rsquo;afficher seulement un extrait (<em>the_excerpt()<\/em>)et pas le contenu entier de l&rsquo;article, le nombre de mots de l&rsquo;extrait par d\u00e9faut est de 50. De plus, l&rsquo;extrait se termine par des points de suspension entre crochets [\u2026].<\/p>\n<p>Il est possible de modifier ces param\u00e8tres. Pour la longueur de l&rsquo;extrait, utilisez le code suivant en adaptant le nombre de mots :<br \/>\n<code>function set_excerpt_length($length) {<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0 return 40;<\/code><br \/>\n<code>}<\/code><br \/>\n<code>add_filter('excerpt_length', 'set_excerpt_length');<\/code><\/p>\n<p>Pour modifier les points de suspension \u00ab\u00a0\u00e0 suivre\u00a0\u00bb, utilisez la fonction ci-dessous qui renvoie du texte entour\u00e9 d&rsquo;un lien vers l&rsquo;article complet, gr\u00e2ce \u00e0 son identifiant :<br \/>\n<code>function set_more( $more ) {<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return '... &lt;br \/&gt;&lt;a href=\"'. get_permalink( get_the_ID() ) . '\"&gt;Lire la suite...&lt;\/a&gt;';<\/code><br \/>\n<code>}<\/code><br \/>\n<code>add_filter('excerpt_more', 'set_more');<\/code><\/p>\n<p><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/get_post_permalink\" target=\"_blank\" rel=\"noopener\">https:\/\/codex.wordpress.org\/Function_Reference\/get_post_permalink<\/a><\/p>\n<p><strong>Cr\u00e9er des emplacements de menu<\/strong><\/p>\n<p>Pour indiquer \u00e0 quel endroit un menu peut \u00eatre plac\u00e9, il faut d\u00e9finir des emplacements dans le fichier functions.php et il apparaitra dans le Dashboard &gt; Apparence &gt; Menus.<\/p>\n<p>La fonction <em>register_nav_menu()<\/em> permet de cr\u00e9er un menu simple. Il faudrait la r\u00e9p\u00e9ter pour en cr\u00e9er plusieurs. La fonction avec un s \u00e0 la fin <em>register_nav_menus()<\/em> sert \u00e0 d\u00e9clarer plusieurs emplacements de menu d&rsquo;un seul coup. Il est cependant conseill\u00e9 de v\u00e9rifier que la fonction existe bien avant de l&rsquo;utiliser, afin d&rsquo;\u00e9viter toute erreur PHP. Le code pour d\u00e9clarer deux menus est donc :<br \/>\n<code>if (function_exists('register_nav_menus')) {<\/code><br \/>\n<code>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0register_nav_menus(<\/code><br \/>\n<code>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0array( 'principal' =&gt; 'Menu principal',<\/code><br \/>\n<code>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 'secondaire' =&gt; 'Menu du pied de page' )<\/code><br \/>\n<code>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0);<\/code><br \/>\n<code>}<\/code><\/p>\n<p>Le tableau (<em>array)<\/em> qui contient les emplacements de menus, commence par l&rsquo;identifiant du menu pour le code, puis par son nom explicite dans le Dashboard.<\/p>\n<p><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/register_nav_menu\" target=\"_blank\" rel=\"noopener\">https:\/\/codex.wordpress.org\/Function_Reference\/register_nav_menu<\/a><br \/>\n<a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/register_nav_menus\" target=\"_blank\" rel=\"noopener\">https:\/\/codex.wordpress.org\/Function_Reference\/register_nav_menus<\/a><\/p>\n<p><strong>D\u00e9clarer des sidebars<\/strong><\/p>\n<p>Comme pour les menus, les sidebars doivent \u00eatre d\u00e9clar\u00e9es dans le fichier functions.php avant de pouvoir \u00eatre utilis\u00e9es (dans le fichier index.php ou autre).<\/p>\n<p>Pour d\u00e9clarer une sidebar, on utilise la fonction register_sidebar() en indiquant dans un tableau (array) un certain nombre de param\u00e8tres, identifiant, nom visible dans le Dashboard &gt; Apparence &gt; Widgets, ainsi que des \u00e9l\u00e9ments HTML \u00e0 ins\u00e9rer avant et apr\u00e8s le widget et le titre. Voici un exemple de code :<br \/>\n<code>register_sidebar( <\/code><br \/>\n<code>\u00a0\u00a0 \u00a0array(\u00a0 'id'\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 =&gt; 'primary',<\/code><br \/>\n<code>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0'name'\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 =&gt; 'Sidebar Principale \u00e0 droite',<\/code><br \/>\n<code>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0'description'\u00a0\u00a0 =&gt; 'Ajouter vos widgets ici pour la sidebar principale.',<\/code><br \/>\n<code>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0'before_widget' =&gt; '&lt;div id=\"%1$s\" class=\"widget %2$s\"&gt;',<\/code><br \/>\n<code>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0'after_widget'\u00a0 =&gt; '&lt;\/div&gt;',<\/code><br \/>\n<code>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0'before_title'\u00a0 =&gt; '&lt;h3 class=\"widget-title\"&gt;',<\/code><br \/>\n<code>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0'after_title'\u00a0\u00a0 =&gt; '&lt;\/h3&gt;' )<\/code><br \/>\n<code>);<\/code><\/p>\n<p><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/register_sidebar\" target=\"_blank\" rel=\"noopener\">https:\/\/codex.wordpress.org\/Function_Reference\/register_sidebar<\/a><\/p>\n<p><strong>Et bien d&rsquo;autres choses<\/strong><\/p>\n<p>Il y a de nombreux sites qui g\u00e9n\u00e8rent le code n\u00e9cessaire \u00e0 certaines fonctions \u00e0 int\u00e9grer au fichier functions.php. En voici quelques-uns, n&rsquo;h\u00e9sitez pas \u00e0 aller y chercher des r\u00e9ponses \u00e0 vos attentes :<br \/>\n<a href=\"http:\/\/www.wpfunction.me\/\" target=\"_blank\" rel=\"noopener\">http:\/\/www.wpfunction.me\/<\/a><br \/>\n<a href=\"https:\/\/generatewp.com\/\" target=\"_blank\" rel=\"noopener\">https:\/\/generatewp.com\/<\/a><br \/>\n<a href=\"http:\/\/wp-snippets.com\/\" target=\"_blank\" rel=\"noopener\">http:\/\/wp-snippets.com\/<\/a><\/p>\n<p>Par ailleurs, en plus du codex, indispensable, voici une ressource simple :<\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"pYfFFbZrLc\"><p><a href=\"http:\/\/www.lumieredelune.com\/encrelune\/fichier-functions-php,2011,08\">Quelques secrets du fichier functions.php<\/a><\/p><\/blockquote>\n<p><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" src=\"http:\/\/www.lumieredelune.com\/encrelune\/fichier-functions-php,2011,08\/embed#?secret=pYfFFbZrLc\" data-secret=\"pYfFFbZrLc\" width=\"474\" height=\"267\" title=\"\u00ab\u00a0Quelques secrets du fichier functions.php\u00a0\u00bb &#8212; Encre de Lune\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<p>&nbsp;<\/p>\n<h4>Conclusion<\/h4>\n<p>Nous nous arr\u00eaterons l\u00e0, mais pour concevoir un th\u00e8me complet, il reste encore du travail, notamment pour cr\u00e9er de nouveaux templates PHP, dont les plus importants sont les fichiers single.php et page.php pour l&rsquo;affichage des articles seuls et des pages. Il reste \u00e9galement \u00e0 cr\u00e9er des personnalisations suppl\u00e9mentaires, \u00e9ventuellement d&rsquo;utiliser des Custom Post Types (moyen souvent utilis\u00e9 actuellement pour faire des portfolios), et bien d&rsquo;autres choses selon vos besoins.<\/p>\n<p>Si vous \u00eates arriv\u00e9s jusque l\u00e0, vous devriez pouvoir satisfaire votre curiosit\u00e9 par des recherches internet. Prenez alors soin de privil\u00e9gier l&rsquo;usage du codex ou de ressources r\u00e9centes, afin d&rsquo;\u00e9viter le code trop ancien et \u00e9ventuellement obsol\u00e8te et mal prot\u00e9g\u00e9. Rappelez-vous que les mises-\u00e0-jour sont garantes de s\u00e9curit\u00e9.<\/p>\n<p>Vous pourrez \u00e9galement beaucoup apprendre en t\u00e9l\u00e9chargeant des th\u00e8mes gratuits (de bonne qualit\u00e9 \u00e9videmment, voir article \u00e0 ce sujet) et en d\u00e9cortiquant leur code.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>\u2026<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le fichier functions.php C&rsquo;est un fichier tr\u00e8s important, car il va contenir l&rsquo;activation de toutes les fonctionnalit\u00e9s n\u00e9cessaires \u00e0 la bonne marche de votre site. Faites attention cependant car une erreur de code, m\u00eame minime dans ce fichier met votre site \u00e0 plat et plus rien ne fonctionne. Pas de panique cependant, il n&rsquo;est pas &hellip; <a href=\"https:\/\/lamartinieredesign.fr\/?page_id=723\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Cr\u00e9er un th\u00e8me complet &#8211; part 4<\/span>  <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":635,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"_links":{"self":[{"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/pages\/723"}],"collection":[{"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=723"}],"version-history":[{"count":20,"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/pages\/723\/revisions"}],"predecessor-version":[{"id":1143,"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/pages\/723\/revisions\/1143"}],"up":[{"embeddable":true,"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/pages\/635"}],"wp:attachment":[{"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}