<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Développement &#8211; Développeur Web</title>
	<atom:link href="https://www.julesgaston.fr/category/developpement/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.julesgaston.fr</link>
	<description>Sites Internet, logiciels, accompagnement marketing</description>
	<lastBuildDate>Tue, 11 Feb 2025 09:31:23 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.2</generator>
	<item>
		<title>Créer un thème FSE Gutenberg sur WordPress : guide technique avec exemples</title>
		<link>https://www.julesgaston.fr/creer-un-theme-fse-gutenberg-sur-wordpress-guide-technique-avec-exemples/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=creer-un-theme-fse-gutenberg-sur-wordpress-guide-technique-avec-exemples</link>
					<comments>https://www.julesgaston.fr/creer-un-theme-fse-gutenberg-sur-wordpress-guide-technique-avec-exemples/#respond</comments>
		
		<dc:creator><![CDATA[camillejg]]></dc:creator>
		<pubDate>Fri, 31 Jan 2025 16:45:00 +0000</pubDate>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://www.julesgaston.fr/?p=1838</guid>

					<description><![CDATA[Lancé en 2021, le Full Site Editing (FSE) de WordPress révolutionne la personnalisation des thèmes. Fini le temps où il fallait tout coder en PHP, maintenant on construit des thèmes principalement avec des fichiers JSON et des blocs, grâce à une interface visuelle intuitive et permettant d&#8217;utiliser Gutenberg pour l&#8217;ensemble des contenus du site. Dans [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Lancé en 2021, le <a href="https://www.ws-interactive.fr/blog/full-site-editing-avec-wordpress/" target="_blank" rel="noreferrer noopener">Full Site Editing (FSE) de WordPress</a> révolutionne la personnalisation des thèmes. Fini le temps où il fallait tout coder en PHP, maintenant on construit des thèmes principalement avec des fichiers JSON et des blocs, grâce à une interface visuelle intuitive et permettant d&rsquo;utiliser Gutenberg pour l&rsquo;ensemble des contenus du site.</p>



<p>Dans cet article, nous allons voir comment mettre en place un thème FSE, avec des extraits de code pour bien comprendre.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">1. Créer la Structure de Base du Thème</h2>



<p>Un thème WordPress FSE suit une structure différente d’un thème classique. Voici l’arborescence minimale :</p>



<pre class="wp-block-code"><code>mon-theme-fse/
│── style.css
│── theme.json
│── index.php
│── templates/
│   ├── index.html
│   ├── single.html
│── parts/
│   ├── header.html
│   ├── footer.html
</code></pre>



<ul class="wp-block-list">
<li><code>style.css</code> : le fichier d’en-tête du thème</li>



<li><code>theme.json</code> : la configuration du thème</li>



<li><code>index.php</code> : fichier obligatoire, même si presque vide</li>



<li><code>templates/</code> : contient les modèles de pages</li>



<li><code>parts/</code> : contient les parties réutilisables comme le header et le footer</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">2. Ajouter un <code>theme.json</code></h2>



<p>Le fichier <code>theme.json</code> est au cœur d’un thème FSE. Il permet de gérer les couleurs, la typographie, la mise en page, et bien plus encore.</p>



<p>Exemple minimal :</p>



<pre class="wp-block-code"><code>{
  "version": 2,
  "settings": {
    "color": {
      "palette": &#91;
        { "name": "Noir", "slug": "noir", "color": "#000000" },
        { "name": "Blanc", "slug": "blanc", "color": "#ffffff" }
      ]
    },
    "typography": {
      "fontSize": &#91;
        { "name": "Petit", "slug": "small", "size": "12px" },
        { "name": "Grand", "slug": "large", "size": "24px" }
      ]
    }
  },
  "styles": {
    "color": {
      "background": "#ffffff",
      "text": "#000000"
    }
  }
}
</code></pre>



<p>Ce fichier définit une palette de couleurs et des tailles de texte personnalisées accessibles depuis l’éditeur Gutenberg.</p>



<p>Pour en savoir plus sur l&rsquo;ensemble des paramètres disponibles sur ce fichier JSON, <a href="https://developer.wordpress.org/block-editor/how-to-guides/themes/global-settings-and-styles/" target="_blank" rel="noreferrer noopener">rendez-vous sur le site de WordPress</a>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">3. Construire les Templates avec des Blocs</h2>



<p>Le FSE utilise des fichiers <code>.html</code> dans <code>templates/</code> et <code>parts/</code> au lieu des classiques <code>header.php</code> et <code>footer.php</code>.</p>



<p>Exemple de <code>header.html</code> :</p>



<pre class="wp-block-code"><code>&lt;!-- wp:group {"tagName":"header","align":"full"} --&gt;
&lt;header class="site-header"&gt;
  &lt;!-- wp:site-title /--&gt;
  &lt;!-- wp:navigation /--&gt;
&lt;/header&gt;
&lt;!-- /wp:group --&gt;
</code></pre>



<p>Exemple de <code>index.html</code> :</p>



<pre class="wp-block-code"><code>&lt;!-- wp:template-part {"slug":"header"} /--&gt;
&lt;!-- wp:post-content /--&gt;
&lt;!-- wp:template-part {"slug":"footer"} /--&gt;
</code></pre>



<p>Ici, on inclut un header, le contenu de la page et un footer. Le contenu de la page sera ensuite administré depuis Gutenberg (ou tout autre éditeur).<br>Ce template pourra aussi être customisé directement depuis l&rsquo;interface de gestion de votre FSE, de manière visuelle. De même pour les template-part, qui sera accessible via la gestion des compositions du thème.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">4. Activer le Thème</h2>



<p>Ajoutez ce code minimal dans <code>style.css</code> pour que WordPress reconnaisse le thème :</p>



<pre class="wp-block-code"><code>/*
Theme Name: Mon super thème FSE
Author: Camille JG
Author URI: https://www.julesgaston.fr/
Version: 1.0
*/
</code></pre>



<p>Puis, allez dans <strong>Apparence &gt; Thèmes</strong>, activez votre thème et testez-le dans l’éditeur de site.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">5. Personnaliser avec des Blocs</h2>



<p>Pour ajouter un design plus avancé, utilisez des blocs comme <code>cover</code>, <code>columns</code>, ou <code>buttons</code>. L&rsquo;ensemble des blocs disponibles sont <a href="https://wordpress.org/documentation/article/blocks-list/" target="_blank" rel="noreferrer noopener nofollow">documentés sur le site WordPress</a>.</p>



<p>Exemple d’un <code>footer.html</code> :</p>



<pre class="wp-block-code"><code>&lt;!-- wp:group {"tagName":"footer","align":"full"} --&gt;
&lt;footer class="site-footer"&gt;
  &lt;!-- wp:paragraph --&gt;
  &lt;p&gt;© 2024 - Mon site&lt;/p&gt;
  &lt;!-- /wp:paragraph --&gt;
&lt;/footer&gt;
&lt;!-- /wp:group --&gt;
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>Créer un thème FSE avec Gutenberg est devenu bien plus simple qu’avec les thèmes classiques. Tout passe par du HTML et un fichier JSON, ce qui facilite la personnalisation pour les non-développeurs une fois le thème mise en place.</p>



<p><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Pour en savoir plus sur les possibilités du Full Site Editing avec Gutenberg, rendez-vous sur le site de l&rsquo;<a href="https://www.ws-interactive.fr/" target="_blank" rel="noreferrer noopener">agence WordPress WS Interactive</a>.</p>



<p><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Testez-le et explorez l’éditeur de site pour peaufiner votre design !</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.julesgaston.fr/creer-un-theme-fse-gutenberg-sur-wordpress-guide-technique-avec-exemples/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Convertir une image png, gif ou jpg en image WebP</title>
		<link>https://www.julesgaston.fr/convertir-image-png-jpg-en-webp/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=convertir-image-png-jpg-en-webp</link>
					<comments>https://www.julesgaston.fr/convertir-image-png-jpg-en-webp/#respond</comments>
		
		<dc:creator><![CDATA[camillejg]]></dc:creator>
		<pubDate>Tue, 09 Jun 2020 15:03:37 +0000</pubDate>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[convertisseur]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[webp]]></category>
		<guid isPermaLink="false">https://www.julesgaston.fr/?p=1664</guid>

					<description><![CDATA[On l&#8217;a vu sur un post précédent, le format WebP a un réel intérêt afin d&#8217;optimiser le temps de chargement de vos pages, en réduisant significativement la taille des images chargées dans le navigateur. Mais comment convertir un image classique en image WebP me direz-vous ? Rien de plus simple, plusieurs solutions s&#8217;offrent à vous [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>On l&rsquo;a vu sur un post précédent, le format WebP a un réel intérêt afin d&rsquo;optimiser le temps de chargement de vos pages, en réduisant significativement la taille des images chargées dans le navigateur.</p>



<span id="more-1664"></span>



<p>Mais comment convertir un image classique en image WebP me direz-vous ? Rien de plus simple, plusieurs solutions s&rsquo;offrent à vous selon votre projet.</p>



<h2 class="wp-block-heading">En PHP, lors du traitement d&rsquo;une image</h2>



<p>En PHP, vous avez la possibilité de convertir une image vers le format WebP grâce à la fonction « <a rel="noreferrer noopener" href="https://www.php.net/manual/fr/function.imagewebp.php" target="_blank">imagewebp</a>« , qui va permettre d&rsquo;afficher ou d&rsquo;enregistrer dans un fichier une image passée en paramètre.</p>



<pre class="wp-block-code"><code>$file = 'image.jpg';

// Création de l'image
$image = imagecreatefromjpeg($file);

// Enregistrement au format WebP
imagewebp($image,'image.webp');</code></pre>



<p>Cette fonction peut donc être utilisée pour la création d&rsquo;images à la volée, ou en pré-traitement lors de l&rsquo;upload par exemple.<br>Rien de plus simple ensuite pour l&rsquo;afficher, utilisez la balise &lt;picture&gt; au lieu de la balise &lt;img /&gt;. En savoir plus sur mon article « <a href="https://www.julesgaston.fr/alternative-image-webp-html/">Prévoir une image alternative à une image WebP en HTML</a>« .</p>



<h2 class="wp-block-heading">A l&rsquo;aide d&rsquo;un convertisseur en ligne</h2>



<p>Il existe de nombreux convertisseurs en ligne vous permettant de convertir en quelques clics toutes vos images JPG, PNG ou GIF en WebP. Mais comme on est jamais mieux servi que par soi-même (:D), je vous ai mis à disposition un <a href="https://webp-converter.julesgaston.fr">convertisseur en ligne de WebP</a>.</p>



<p>C&rsquo;est gratuit et sans limite, donc n&rsquo;hésitez pas à l&rsquo;utiliser !</p>



<h2 class="wp-block-heading">En utilisant un CDN (Content Delivery Network)</h2>



<p>Dernière solution, facile à mettre en place, l&rsquo;utilisation d&rsquo;un service de CDN. Ceux-ci, au-delà de l&rsquo;optimisation des images, auront l&rsquo;avantage de vous apporter une approche globale afin de vous aider à améliorer vos performances de chargement.</p>



<p>Concernant les images, ils choisissent automatiquement, ou selon des critères que vous allez donner, l&rsquo;ensemble des images de votre site Internet, les transforment en WebP lorsque cela permet d&rsquo;optimiser leur taille, et les proposent directement dans ce format à vos visiteurs.</p>



<p>Quelques Content Delivery Network connus :</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<ul class="wp-block-list"><li><a href="https://tracking.stackpath.com/W7mRn" target="_blank" rel="noreferrer noopener">StackPath </a>(anciennement MaxCDN)</li><li><a rel="noreferrer noopener" href="https://www.cloudflare.com/" target="_blank">CloudFlare</a></li><li><a rel="noreferrer noopener" href="https://www.cachefly.com/" target="_blank">Cache Fly</a></li><li><a rel="noreferrer noopener" href="https://www.cdn77.com/" target="_blank">CDN77</a></li></ul>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<a href="https://tracking.stackpath.com/c/2351647/515673/8285" id="515673"><img fetchpriority="high" decoding="async" src="//a.impactradius-go.com/display-ad/8285-515673" border="0" alt="" width="301" height="251"/></a><img decoding="async" height="0" width="0" src="//tracking.stackpath.com/i/2351647/515673/8285" style="position:absolute;visibility:hidden;" border="0" /></a>
</div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.julesgaston.fr/convertir-image-png-jpg-en-webp/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Comment installer reCAPTCHA v3 sur Contact Form 7</title>
		<link>https://www.julesgaston.fr/installer-recaptcha-v3-contact-form-7/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installer-recaptcha-v3-contact-form-7</link>
					<comments>https://www.julesgaston.fr/installer-recaptcha-v3-contact-form-7/#comments</comments>
		
		<dc:creator><![CDATA[camillejg]]></dc:creator>
		<pubDate>Wed, 01 Apr 2020 12:40:41 +0000</pubDate>
				<category><![CDATA[Autres]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[contact form 7]]></category>
		<category><![CDATA[recaptcha]]></category>
		<guid isPermaLink="false">https://www.julesgaston.fr/?p=1672</guid>

					<description><![CDATA[Après un premier article détaillant comment installer reCaptcha v2 sur le populaire plugin Contact Form 7 sur WordPress, il est désormais grand temps de se mettre à jour, recaptcha v2 n&#8217;étant plus pris en charge. Pour ce faire, rien de plus simple que ce que je vous avais présenté lors de ce précédent article. L&#8217;installation [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Après un premier article détaillant comment installer reCaptcha v2 sur le populaire plugin Contact Form 7 sur WordPress, il est désormais grand temps de se mettre à jour, recaptcha v2 n&rsquo;étant plus pris en charge.</p>



<span id="more-1672"></span>



<p>Pour ce faire, rien de plus simple que ce que je vous avais présenté lors de ce <a rel="noreferrer noopener" href="https://www.julesgaston.fr/comment-installer-recaptcha-sur-contact-form-7/" target="_blank">précédent article</a>. L&rsquo;installation de reCAPTCHA ne nécessite que deux étapes à la portée de tous. Une fois Contact Form 7 installé sur votre site :</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="631" height="519" src="https://www.julesgaston.fr/wp-content/uploads/2020/04/recaptcha-v3-formulaire.png" alt="" class="wp-image-1674" srcset="https://www.julesgaston.fr/wp-content/uploads/2020/04/recaptcha-v3-formulaire.png 631w, https://www.julesgaston.fr/wp-content/uploads/2020/04/recaptcha-v3-formulaire-300x247.png 300w" sizes="(max-width: 631px) 100vw, 631px" /></figure></div>



<p>Créez votre clé API reCAPTCHA version depuis votre compte Google : <a rel="noreferrer noopener" href="https://www.google.com/recaptcha/admin/create" target="_blank">https://www.google.com/recaptcha/admin/create</a>. Choisissez bien reCaptcha V3, la version 2 n&rsquo;étant plus disponible sur Contact Form 7.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1005" height="679" src="https://www.julesgaston.fr/wp-content/uploads/2020/04/recaptcha-v3-cles.png" alt="" class="wp-image-1675" srcset="https://www.julesgaston.fr/wp-content/uploads/2020/04/recaptcha-v3-cles.png 1005w, https://www.julesgaston.fr/wp-content/uploads/2020/04/recaptcha-v3-cles-300x203.png 300w, https://www.julesgaston.fr/wp-content/uploads/2020/04/recaptcha-v3-cles-768x519.png 768w" sizes="auto, (max-width: 1005px) 100vw, 1005px" /></figure></div>



<p>Une fois votre demande envoyée, vous obtenez instantanément votre du site et votre clé secrète. Rendez-vous désormais dans votre administration WordPress, allez dans « Contact », puis « Intégration ». Cliquez sur « Configuration de l&rsquo;intégration » dans le cadre reCaptcha, puis saisissez vos clé.  </p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="520" height="355" src="https://www.julesgaston.fr/wp-content/uploads/2020/04/recaptcha-v3-contactform7.png" alt="" class="wp-image-1676" srcset="https://www.julesgaston.fr/wp-content/uploads/2020/04/recaptcha-v3-contactform7.png 520w, https://www.julesgaston.fr/wp-content/uploads/2020/04/recaptcha-v3-contactform7-300x205.png 300w" sizes="auto, (max-width: 520px) 100vw, 520px" /></figure></div>



<p>Le tour est joué ! Vous pouvez dire adieu aux spams intempestifs sur votre site <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.julesgaston.fr/installer-recaptcha-v3-contact-form-7/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>Prévoir une image alternative à une image WebP en HTML</title>
		<link>https://www.julesgaston.fr/alternative-image-webp-html/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=alternative-image-webp-html</link>
					<comments>https://www.julesgaston.fr/alternative-image-webp-html/#respond</comments>
		
		<dc:creator><![CDATA[camillejg]]></dc:creator>
		<pubDate>Mon, 23 Mar 2020 09:23:40 +0000</pubDate>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[picture]]></category>
		<category><![CDATA[webp]]></category>
		<guid isPermaLink="false">https://www.julesgaston.fr/?p=1663</guid>

					<description><![CDATA[Le format WebP est un format d&#8217;image poussé par Google depuis quelques années, et qui a l&#8217;énorme avantage de pouvoir obtenir des images d&#8217;une qualité quasi comparable à un png24, mais à un poids largement inférieur. Mais ce format est pour le moment indisponible pour Safari. Donc sur Mac, iPad et iPhone, soit un échantillon [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Le format WebP est un format d&rsquo;image poussé par Google depuis quelques années, et qui a l&rsquo;énorme avantage de pouvoir obtenir des images d&rsquo;une qualité quasi comparable à un png24, mais à un poids largement inférieur.</p>



<span id="more-1663"></span>



<p>Mais ce format est pour le moment indisponible pour Safari. Donc sur Mac, iPad et iPhone, soit un échantillon significatif d&rsquo;internautes, vos images WebP ne seront pas affichées. Il est donc nécessaire de proposer une image au format initial (jpg, png ou gif) afin qu&rsquo;elle puisse s&rsquo;afficher sur ce navigateur et ces supports.</p>



<p>Rien de plus simple, grâce à la balise html &lt;picture>, qui offre la possibilité de lister les formats disponibles pour une seule et même image. Cette balise va venir en remplacement de la classique &lt;img />.</p>



<pre class="wp-block-code"><code>&lt;!-- MON ANCIEN AFFICHAGE d'IMAGE -->
&lt;img src="mon_image_source.png" alt="Coucou webp" title="Coucou webp">

&lt;!-- AVEC UNE WEBP ET UNE ALTERNATIVE PNG -->
&lt;picture>
  &lt;source srcset="mon_image.webp" type="image/webp">
  &lt;source srcset="mon_image_source.png" type="image/png">
  &lt;img src="mon_image_source.png" alt="Coucou webp" title="Coucou webp">
&lt;/picture></code></pre>



<p>Et voilà, vos images sont désormais disponibles pour tous les navigateurs, et particulièrement optimisées pour un affichage sur Google Chrome, Firefox ou Edge grâce à l&rsquo;image WebP !</p>



<p>Pour ceux qui souhaiteraient en savoir plus sur comment créer une image WebP en PHP, j&rsquo;ai détaillé la méthode dans l&rsquo;article « <a rel="noreferrer noopener" aria-label=" (s’ouvre dans un nouvel onglet)" href="https://www.julesgaston.fr/convertir-image-png-jpg-en-web" target="_blank">Convertir une image au format WebP</a>« .</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.julesgaston.fr/alternative-image-webp-html/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Configurer Google Analytics Site Search pour des recherches ajax</title>
		<link>https://www.julesgaston.fr/google-analytics-site-search-recherche-ajax/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=google-analytics-site-search-recherche-ajax</link>
					<comments>https://www.julesgaston.fr/google-analytics-site-search-recherche-ajax/#respond</comments>
		
		<dc:creator><![CDATA[camillejg]]></dc:creator>
		<pubDate>Fri, 13 Mar 2020 15:32:12 +0000</pubDate>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[google]]></category>
		<guid isPermaLink="false">https://www.julesgaston.fr/?p=1653</guid>

					<description><![CDATA[J&#8217;ai dû installer il y a peu le tracking Google Analytics des recherches sur un site WordPress, pour lequel nous avions choisi de distribuer les résultats en Ajax. La solution donné ci-après fonctionne pour tous types de scripts et CMS, sans forcément passer par WordPress. Les infos divergent suite aux différentes mises à jour de [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>J&rsquo;ai dû installer il y a peu le tracking Google Analytics des recherches sur un site WordPress, pour lequel nous avions choisi de distribuer les résultats en Ajax.</p>



<span id="more-1653"></span>



<p>La solution donné ci-après fonctionne pour tous types de scripts et CMS, sans forcément passer par WordPress.</p>



<p>Les infos divergent suite aux différentes mises à jour de Google Analytics, il n&rsquo;est donc pas aisé de trouver de l&rsquo;infos à ce sujet. Mais finalement, rien de plus simple pour mettre cela en place.</p>



<p>Dans un premier temps, il est nécessaire de configurer le tracking des résultats de recherche dans votre compte Google Analytics.<br>Rendez-vous dans « Administration », puis « Paramètres de la vue » (troisième colonne », et enfin « Paramètres de recherche sur site » en bas de page.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="760" src="https://www.julesgaston.fr/wp-content/uploads/2020/03/analytics-search-parameters-1024x760.jpg" alt="" class="wp-image-1660" srcset="https://www.julesgaston.fr/wp-content/uploads/2020/03/analytics-search-parameters-1024x760.jpg 1024w, https://www.julesgaston.fr/wp-content/uploads/2020/03/analytics-search-parameters-300x223.jpg 300w, https://www.julesgaston.fr/wp-content/uploads/2020/03/analytics-search-parameters-768x570.jpg 768w, https://www.julesgaston.fr/wp-content/uploads/2020/03/analytics-search-parameters.jpg 1266w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Interface Google Analytics</figcaption></figure>



<p>Ici, mon paramètre de recherche est « q ». A savoir, ma recherche est appelée ainsi : « https://www.monsite.com/q=marecherche ».<br>Une fois configuré, rendez-vous sur votre script Javascript pour installer le code de suivi généré avec gtag.<br>Voici par exemple ci-dessous ma fonction qui réalise ma recherche (avec un peu de jQuery).</p>



<pre class="wp-block-code"><code>function launchSearch(){
    var $input = $("#s");
    var query = $input.val();
    if (myTimeOut != null) {
      clearTimeout(myTimeOut);
    }
    
    // Je temporise le lancement de la recherche pour éviter de lancer la recherche à chaque fois que l'on appuie sur une touche
    myTimeOut = setTimeout(function(){
      myTimeOut = null;
      $.ajax({
          type : 'post',
          url : ajaxSearchUrl,
          data : {
              action : 'load_search_results',
              query : query
          },
          success : function( response ) {
              // Une fois le résultat obtenu, j'envoi ma requête à Google Analytics
              gtag('config', 'UA-156267736-1',{
                  'page_title' : 'search',
                  'page_path': 'search/?q=' + query
              });
          }
      });
    },500);
}</code></pre>



<p>Et voilà, ma recherche a bien été enregistrée exactement de la même manière qu&rsquo;une recherche classique !</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.julesgaston.fr/google-analytics-site-search-recherche-ajax/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Encoder ou décoder des entités HTML (html entities) en Javascript</title>
		<link>https://www.julesgaston.fr/encoder-decoder-entites-html-entities-javascript/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=encoder-decoder-entites-html-entities-javascript</link>
					<comments>https://www.julesgaston.fr/encoder-decoder-entites-html-entities-javascript/#respond</comments>
		
		<dc:creator><![CDATA[camillejg]]></dc:creator>
		<pubDate>Tue, 30 Jul 2019 12:02:17 +0000</pubDate>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[decode]]></category>
		<category><![CDATA[encode]]></category>
		<category><![CDATA[entities]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[js]]></category>
		<guid isPermaLink="false">https://www.julesgaston.fr/?p=1647</guid>

					<description><![CDATA[Il peut parfois être utile d&#8217;encoder ou décoder du code HTML directement avec Javascript. Contrairement à PHP, ce langage n&#8217;a pas prévu de fonction native afin de réaliser cette opération. Pour ce faire, il est nécessaire de créer une textarea temporaire nous permettant de manipuler les données. Vous trouverez ci-dessous deux propositions de scripts. Avec [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Il peut parfois être utile d&rsquo;encoder ou décoder du code HTML directement avec Javascript. Contrairement à PHP, ce langage n&rsquo;a pas prévu de fonction native afin de réaliser cette opération.</p>



<span id="more-1647"></span>



<p>Pour ce faire, il est nécessaire de créer une textarea temporaire nous permettant de manipuler les données. Vous trouverez ci-dessous deux propositions de scripts. Avec et sans jQuery, pour encoder puis décoder du code HTML.</p>



<h3 class="wp-block-heading">Décodage HTML</h3>



<pre class="wp-block-code"><code>// Decode en JS
function decodeHTMLEntities(text) {
  var textArea = document.createElement('textarea');
  textArea.innerHTML = text;
  return textArea.value;
}

// Decode avec jQuery
function decodeHTMLEntities(text) {
  return $("&lt;textarea/>").html(text).text();
}</code></pre>



<h3 class="wp-block-heading">Encodage HTML</h3>



<pre class="wp-block-code"><code>// Encode en JS
function encodeHTMLEntities(text) {
  var textArea = document.createElement('textarea');
  textArea.innerText = text;
  return textArea.innerHTML;
}

// Encode avec jQuery
function encodeHTMLEntities(text) {
  return $("&lt;textarea/>").text(text).html();
}</code></pre>



<p>Source : <a href="https://medium.com/@tertiumnon/js-how-to-decode-html-entities-8ea807a140e5">https://medium.com/@tertiumnon/js-how-to-decode-html-entities-8ea807a140e5</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.julesgaston.fr/encoder-decoder-entites-html-entities-javascript/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Installer une réécriture d&#8217;URL personnalisée avec paramètre sur WordPress</title>
		<link>https://www.julesgaston.fr/installer-une-reecriture-durl-personnalisee-avec-parametre-sur-wordpress/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installer-une-reecriture-durl-personnalisee-avec-parametre-sur-wordpress</link>
					<comments>https://www.julesgaston.fr/installer-une-reecriture-durl-personnalisee-avec-parametre-sur-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[camillejg]]></dc:creator>
		<pubDate>Wed, 05 Jun 2019 20:38:41 +0000</pubDate>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[rewrite_rule]]></category>
		<category><![CDATA[urlrewriting]]></category>
		<guid isPermaLink="false">https://www.julesgaston.fr/?p=1634</guid>

					<description><![CDATA[La réécriture d&#8217;adresses est toujours un indispensable du référencement naturel, et peut s&#8217;avérer utile à mettre en place lorsque l&#8217;on développe des pages sur -mesure ou des plugins WordPress. Pour ce faire, et lorsque vous souhaitez passer certains paramètres dans vos URL, il est indispensable de suivre certaines règles éditées par le CMS. Ces déclarations [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>La réécriture d&rsquo;adresses est toujours un indispensable du référencement naturel, et peut s&rsquo;avérer utile à mettre en place lorsque l&rsquo;on développe des pages sur -mesure ou des plugins WordPress.</p>



<span id="more-1634"></span>



<p>Pour ce faire, et lorsque vous souhaitez passer certains paramètres dans vos URL, il est indispensable de suivre certaines règles éditées par le CMS. Ces déclarations sont à faire soit dans votre plugin, soit dans le fichier functions.php de votre thème.<br>Premièrement, la déclaration des variables, qui autorise leur utilisation des les URL chargées.</p>



<pre class="wp-block-code"><code>// Installation de la variable
function wpd_add_query_vars( $qvars ) {
  $qvars[] = 'ma_variable';
  return $qvars;
}
add_filter( 'query_vars', 'wpd_add_query_vars' );</code></pre>



<p>Deuxième étape, la définition de ma règle de réécriture. Pour l&rsquo;exemple ci-dessous, je souhaites que toutes les pages appelées « /mon_url/ », et suivies de n&rsquo;importe quoi d&rsquo;autre, appeleront ma page « mon_url » définie dans mes pages WordPress. J&rsquo;y ajoutes la récupération de ma variable, qui va ici aller chercher le premier paramètre situé après « mon_url/ ».</p>



<pre class="wp-block-code"><code>// Initialisation de la règle de réécriture
function wpd_page_rewrite(){
    add_rewrite_rule(
        '^mon_url/([^/]*)?',
        'index.php?pagename=mon_url&amp;ma_variable=$matches[1]',
        'top'
    );
}
add_action( 'init', 'wpd_page_rewrite' );</code></pre>



<p>Votre réécriture est prête. Reste plus qu&rsquo;à la déclarer à WordPress afin qu&rsquo;elle soit bien prise en compte. Attention, sans cette réinitialisation des règles de réécriture, votre rewriting personnalisé ne sera jamais pris en compte.<br>Dans cette fonction, j&rsquo;ai ajouté un test sur les règles existantes afin que la réinitialisation ne soit prise en compte que dans le cas où « mon_url » n&rsquo;a jamais été prise en compte.</p>



<pre class="wp-block-code"><code>// Installation de la réécriture dans les règles de rewriting de WordPress
function my_flush_rules()
{
    $rules = get_option( 'rewrite_rules' );
    if ( ! isset( $rules['(mon_url)/(\d*)$'] ) ) {
        global $wp_rewrite; $wp_rewrite->flush_rules();
    }
}
add_action( 'wp_loaded','my_flush_rules' );</code></pre>



<p>Et c&rsquo;est gagné ! A vous les belles URL réécrites <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<h2 class="wp-block-heading">Récapitulatif du code à créer :</h2>



<pre class="wp-block-code"><code>// Installation de la variable
function wpd_add_query_vars( $qvars ) {
  $qvars[] = 'ma_variable';
  return $qvars;
}
add_filter( 'query_vars', 'wpd_add_query_vars' );

// Initialisation de la règle de réécriture
function wpd_page_rewrite(){
    add_rewrite_rule(
        '^mon_url/([^/]*)?',
        'index.php?pagename=mon_url&amp;ma_variable=$matches[1]',
        'top'
    );
}
add_action( 'init', 'wpd_page_rewrite' );

// Installation de la réécriture dans les règles de rewriting de WordPress
function my_flush_rules()
{
    $rules = get_option( 'rewrite_rules' );
    if ( ! isset( $rules['(mon_url)/(\d*)$'] ) ) {
        global $wp_rewrite; $wp_rewrite->flush_rules();
    }
}
add_action( 'wp_loaded','my_flush_rules' );</code></pre>
]]></content:encoded>
					
					<wfw:commentRss>https://www.julesgaston.fr/installer-une-reecriture-durl-personnalisee-avec-parametre-sur-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Personnaliser le Widget moteur de recherche de WordPress</title>
		<link>https://www.julesgaston.fr/personnaliser-le-widget-moteur-de-recherche-de-wordpress/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=personnaliser-le-widget-moteur-de-recherche-de-wordpress</link>
					<comments>https://www.julesgaston.fr/personnaliser-le-widget-moteur-de-recherche-de-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[camillejg]]></dc:creator>
		<pubDate>Mon, 28 Jan 2019 21:40:49 +0000</pubDate>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[widget]]></category>
		<guid isPermaLink="false">https://www.julesgaston.fr/?p=231</guid>

					<description><![CDATA[WordPress donne la possibilité, de manière assez simple, d&#8217;ajouter des widgets afin de construire votre site Internet. Ceux-ci peuvent être des listes d&#8217;articles, des listes de pages, des menus, du html personnalisé, un moteur de recherche, &#8230; La présentation par défaut de ces éléments est définie par WordPress, et il est souvent nécessaire de jouer [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>WordPress donne la possibilité, de manière assez simple, d&rsquo;ajouter des widgets afin de construire votre site Internet. Ceux-ci peuvent être des listes d&rsquo;articles, des listes de pages, des menus, du html personnalisé, un moteur de recherche, &#8230;</p>



<span id="more-231"></span>



<p>La présentation par défaut de ces éléments est définie par WordPress, et il est souvent nécessaire de jouer avec les possibilités de WP afin de les customiser et obtenir le rendu que vous souhaitez.</p>



<p>Pour ce faire, il est nécessaire d&rsquo;insérer le code suivant dans le fichier functions.php de votre thème, et personnaliser votre formulaire.</p>



<blockquote><pre class="wp-block-preformatted"> // A inclure dans votre functions.php<br>function your_search_form( $form ) {<br>      $form = '&lt;form role="search" method="get" id="search-form" action="' . home_url( '/' ) . '" &gt;
     &lt;input type="search" value="' . get_search_query() . '" name="s" id="s" placeholder="Rechercher" /&gt;
     &lt;input type="submit" id="searchsubmit" value="Ok" /&gt;
     &lt;/form&gt;';<br>      return $form;<br> }<br>
add_filter( 'get_search_form', 'your_search_form' );
</pre></blockquote>
]]></content:encoded>
					
					<wfw:commentRss>https://www.julesgaston.fr/personnaliser-le-widget-moteur-de-recherche-de-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Comment installer reCAPTCHA v2 sur Contact Form 7</title>
		<link>https://www.julesgaston.fr/comment-installer-recaptcha-sur-contact-form-7/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=comment-installer-recaptcha-sur-contact-form-7</link>
					<comments>https://www.julesgaston.fr/comment-installer-recaptcha-sur-contact-form-7/#comments</comments>
		
		<dc:creator><![CDATA[camillejg]]></dc:creator>
		<pubDate>Tue, 04 Dec 2018 21:25:45 +0000</pubDate>
				<category><![CDATA[Autres]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[contact form 7]]></category>
		<category><![CDATA[recaptcha]]></category>
		<guid isPermaLink="false">https://www.julesgaston.fr/?p=224</guid>

					<description><![CDATA[Vous en avez marre de recevoir tout un tas de spams provenant de vos installations Wordpress ? Et vous utilisez Contact Form 7 pour la gestion de vos formulaires, notamment vos formulaires de contact.]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p>Vous en avez marre de recevoir tout un tas de spams provenant de vos installations WordPress ? Et vous utilisez Contact Form 7 pour la gestion de vos formulaires, notamment vos formulaires de contact.</p>



<span id="more-224"></span>



<p class="has-text-color has-background has-text-align-center has-normal-font-size has-very-light-gray-color has-vivid-red-background-color">Attention : recaptcha V2 n&rsquo;est plus disponible sur Contact Form 7 !<br>Un nouvel article expliquant l&rsquo;intégration de recaptcha V3 a été rédigé, vous le trouverez ici : <a href="https://www.julesgaston.fr/installer-recaptcha-v3-contact-form-7/"><strong>Installation reCaptcha version 3</strong></a></p>



<p>L&rsquo;installation de reCAPTCHA ne prends pas plus de 2 minutes, et se déroule en trois étapes toute simple :</p>



<ul class="wp-block-list"><li>Créer une clé API reCAPTCHA V2 avec case à cocher en vous rendant sur votre compte Google : <a href="https://www.google.com/recaptcha/admin#list" target="_blank" rel="noopener noreferrer">https://www.google.com/recaptcha/admin#list</a>. Attention de bien choisir reCaptcha V2, la V3 (mode invisible) n&rsquo;étant à ce jour pas prise en compte par Contact Form 7 ;</li><li>Une fois la clé créée, vous obtenez une « Clé du site », et une clé secrète. Rendez-vous dans le menu « Intégration » de Contact Form 7, sur lequel vous pourrez alors ajouter vos clés ;</li><li>Vous pouvez désormais ajouter le tag&nbsp; [recaptcha] en bas de vos formulaire, généralement avant le bouton d&rsquo;envoi</li></ul>



<p>Et voilà, fini les spams intempestifs !</p>
</div></div>
</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.julesgaston.fr/comment-installer-recaptcha-sur-contact-form-7/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>WordPress : configurer l&#8217;envoi des mails au format HTML</title>
		<link>https://www.julesgaston.fr/wordpress-configurer-lenvoi-des-mails-au-format-html/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=wordpress-configurer-lenvoi-des-mails-au-format-html</link>
					<comments>https://www.julesgaston.fr/wordpress-configurer-lenvoi-des-mails-au-format-html/#respond</comments>
		
		<dc:creator><![CDATA[camillejg]]></dc:creator>
		<pubDate>Fri, 17 Aug 2018 09:13:10 +0000</pubDate>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[mails]]></category>
		<guid isPermaLink="false">https://www.julesgaston.fr/?p=221</guid>

					<description><![CDATA[Par défaut,les emails envoyés grâce à la fonction wp_mail() de WordPress sont envoyés au format texte brut. Gênant lorsque l&#8217;on souhaite envoyer des mails qui ne ressemblent pas à un texte froid, noir sur fond blanc 😉 Afin de procéder à cette modification, et ouvrir la possibilité d&#8217;envoyer des emails au format html, un simple [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Par défaut,les emails envoyés grâce à la fonction wp_mail() de WordPress sont envoyés au format texte brut. Gênant lorsque l&rsquo;on souhaite envoyer des mails qui ne ressemblent pas à un texte froid, noir sur fond blanc <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /><span id="more-221"></span></p>
<p>Afin de procéder à cette modification, et ouvrir la possibilité d&rsquo;envoyer des emails au format html, un simple initialisation est nécessaire. Vous pouvez l&rsquo;ajouter dans votre fichier functions.php, ou directement dans un plugin.</p>
<blockquote>
<pre>// A inclure dans votre functions.php ou dans votre plugin
function wp_set_mail_to_html(){
    return "text/html";
}
add_filter( 'wp_mail_content_type','wp_set_mail_to_html' );
</pre>
</blockquote>
<p>Rien de plus simple !</p>
<p>Et pour réaliser l&rsquo;envoi de vos mails, je vous conseille l&rsquo;utilisation d&rsquo;un SMTP de type <a href="_wp_link_placeholder" data-wplink-edit="true">Brevo</a> afin de sécuriser vos envois et obtenir une analyse détaillée de vos taux de réception et d&rsquo;ouverture.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.julesgaston.fr/wordpress-configurer-lenvoi-des-mails-au-format-html/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
