<?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>Le Blog de Nukleo &#187; PHP</title>
	<atom:link href="https://www.nukleo.fr/blog/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.nukleo.fr/blog</link>
	<description>Un blog de webdesign et développement</description>
	<lastBuildDate>Tue, 04 Mar 2014 15:50:19 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>WordPress : Créer un plugin pour rendre functions.php indépendant du thème</title>
		<link>https://www.nukleo.fr/blog/wordpress-creer-plugin-pour-rendre-functions-independant-theme/</link>
		<comments>https://www.nukleo.fr/blog/wordpress-creer-plugin-pour-rendre-functions-independant-theme/#comments</comments>
		<pubDate>Wed, 05 Oct 2011 11:11:40 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Astuces]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://www.nukleo.fr/blog/?p=41</guid>
		<description><![CDATA[Le fichier functions.php permet de modifier et/ou ajouter des fonctionnalités à WordPress mais si vous changez de thème, vous perdez ces modifications. On pourrait se contenter de copier/coller ces changements dans le nouveau thème, ou on pourrait les transférer dans un plugin afin de les conserver quel que soit le thème. Faut-il tout transférer ?<br /><a href="https://www.nukleo.fr/blog/wordpress-creer-plugin-pour-rendre-functions-independant-theme/">Lire l'article</a>]]></description>
			<content:encoded><![CDATA[<p>Le fichier <a href="http://codex.wordpress.org/Theme_Development#Functions_File" title="Codex WordPress (anglais)" target="_blank">functions.php</a> permet de modifier et/ou ajouter des fonctionnalités à WordPress mais si vous changez de thème, vous perdez ces modifications. On pourrait se contenter de copier/coller ces changements dans le nouveau thème, ou on pourrait les transférer dans un plugin afin de les conserver quel que soit le thème.<span id="more-41"></span></p>
<h3>Faut-il tout transférer ?</h3>
<p>La réponse à cette question simple l&rsquo;est tout aussi : non. Pour savoir ce qu&rsquo;il faut transférer il faut faire une distinction entre les fonctions qui impactent le <strong>contenu</strong> et celles qui impactent le <strong>design.</strong> Celles qui ont un impact sur le contenu ont tout intérêt à être déplacées dans un (ou plusieurs) plugins alors que les autres servent uniquement le design ou layout du site et doivent rester dans le fichier functions.php du thème.</p>
<h4>Que faut-il (ou peut-on) transférer ?</h4>
<p>Dès l&rsquo;instant où le fait de ne plus avoir une fonction va poser un problème il serait judicieux qu&rsquo;elle se retrouve dans le plugin, par exemple :</p>
<ul>
<li>Les shortcodes</li>
<li>Les filtrages de contenu</li>
<li>Les custom post types</li>
<li>Les custom taxonomies</li>
<li>Les ajouts à l&rsquo;admin de WordPress</li>
</ul>
<h4>Que faut-il conserver dans functions.php ?</h4>
<p>Si une fonction n&rsquo;a qu&rsquo;un impact visuel, notamment sur le design et la structure du site, dans ce cas il appartient directement au thème et doit par conséquent rester dans functions.php &#8211; par exemple :</p>
<ul>
<li>Les menus</li>
<li>Les sidebars</li>
<li>La pagination</li>
</ul>
<h3>Créer le plugin de fonctionnalités</h3>
<p>La création d&rsquo;un plugin est très simple et si vous savez ajouter des fonctions à functions.php alors vous pouvez créer votre plugin !</p>
<h4>Première étape</h4>
<p>Créez un repertoire qui porte le <strong>nom de votre plugin</strong> en n&rsquo;utilisant que des lettres non accentuées, des chiffres et des tirets. Pour cette article on partira du principe que le nom du plugin est monsite-fonctions.</p>
<p>Dans ce répertoire créez un fichier PHP qui porte exactement le même nom : monsite-fonctions.php.</p>
<h4>Deuxième étape</h4>
<p>Ajoutez les commentaires en début de fichier qui permettront à WordPress de voir qu&rsquo;il s&rsquo;agit bien d&rsquo;un plugin :</p>
<pre class="brush: php; title: ; notranslate">
/*
Plugin Name: Fonctions de monsite
Plugin URI: http://www.monsite.com/
Description: Déplace les fonctionnalités qui impactent le contenu dans un plugin
Author: Nom Prénom
Version: 0.1
Author URI: http://www.monsite.com/
*/
</pre>
<h4>Troisième étape</h4>
<p>Il n&rsquo;y a plus qu&rsquo;a insérer les fonctions dans ce fichier, puis activer le plugin dans l&rsquo;administration de WordPress et le tour est joué !</p>
<h3>Conclusion</h3>
<p>Comme vous l&rsquo;avez vu il est très simple de créer un plugin rendant les fonctions clés d&rsquo;un site sous WordPress indépendantes de son thème. Cela peut être également très utile dans le cas où votre client veut pouvoir changer de thème sans pour autant perdre ses fonctions. Vous pouvez également vous constituer une bibliothèque de plugins réutilisables dans d&rsquo;autres thèmes.</p>
<p>Pour en savoir plus sur la création de plugins, je vous invite à consulter le codex de WordPress (en anglais) : <a href="http://codex.wordpress.org/Writing_a_Plugin" target="_blank">writing a plugin</a></p>
<p>Happy coding !</p>
]]></content:encoded>
			<wfw:commentRss>https://www.nukleo.fr/blog/wordpress-creer-plugin-pour-rendre-functions-independant-theme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress : limiter la recherche à certains types de posts</title>
		<link>https://www.nukleo.fr/blog/wordpress-limiter-recherche-certains-type-posts/</link>
		<comments>https://www.nukleo.fr/blog/wordpress-limiter-recherche-certains-type-posts/#comments</comments>
		<pubDate>Mon, 09 May 2011 04:23:29 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Astuces]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.nukleo.fr/blog/?p=40</guid>
		<description><![CDATA[Par défaut, le moteur de recherche de WordPress cherche les termes demandés dans tous les types de posts publiés du site, à savoir : les articles (posts), les pages (post-type page), les custom posts etc&#8230; Dans certains cas de figure on pourrait souhaiter limiter la recherche à un seul type de post, ou la restreindre<br /><a href="https://www.nukleo.fr/blog/wordpress-limiter-recherche-certains-type-posts/">Lire l'article</a>]]></description>
			<content:encoded><![CDATA[<p>Par défaut, le moteur de recherche de WordPress cherche les termes demandés dans tous les types de posts publiés du site, à savoir : les articles (posts), les pages (post-type page), les custom posts etc&#8230; Dans certains cas de figure on pourrait souhaiter <strong>limiter la recherche</strong> à un seul type de post, ou la restreindre à certains types. Voici comment.<span id="more-40"></span></p>
<h3>Functions.php</h3>
<p>Il suffit d&rsquo;ajout un tout petit bloc de code dans le fichiers <strong>functions.php</strong> :</p>
<pre class="brush: php; title: ; notranslate">
// filtrage des recherches -&gt; limite aux articles publiés
function filtre_recherche( $query ) {
	if ( $query-&gt;is_search &amp;&amp; !is_admin() ) {
		$query-&gt;set( 'post_type', 'post' );
	}
	return $query;
}
// ajout du filtrage sur le hook 'pre_get_post'
add_filter( 'pre_get_posts', 'filtre_recherche' );
</pre>
<p>Ce bout de code restreindra la recherche aux seuls articles (posts) publiés. Si l&rsquo;on souhaite étendre la recherche à plusieurs types, il suffit de modifier légèrement la fonction :</p>
<pre class="brush: php; title: ; notranslate">
// filtrage des recherches -&gt; limite aux articles publiés, aux pages et à un custom post type
function filtre_recherche( $query ) {
	if ( $query-&gt;is_search &amp;&amp; !is_admin() ) {
		$query-&gt;set(  'post_type', array( 'post', 'page', 'custom-post-type' ) );
	}
	return $query;
}
// ajout du filtrage sur le hook 'pre_get_post'
add_filter( 'pre_get_posts', 'filtre_recherche' );
</pre>
<p>Vous l&rsquo;aurez remarqué, seule la partie <strong><code>$query->set()</code></strong> change : on lui passe un array des types de posts que l&rsquo;on souhaite voir apparaître dans les résultats de recherche.</p>
<h3>Pour en savoir plus</h3>
<p>Rendez-vous sur le <a href="http://codex.wordpress.org/">Codex de WordPress</a> : la class <a href="http://codex.wordpress.org/Function_Reference/WP_Query">WP_query</a> (qui contient la propriété <code>$query</code>) et le <a href="http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts">hook pre_get_posts</a></p>
<p>Happy coding !</p>
]]></content:encoded>
			<wfw:commentRss>https://www.nukleo.fr/blog/wordpress-limiter-recherche-certains-type-posts/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Afficher les articles en colonne avec WordPress</title>
		<link>https://www.nukleo.fr/blog/afficher-articles-colonne-wordpress/</link>
		<comments>https://www.nukleo.fr/blog/afficher-articles-colonne-wordpress/#comments</comments>
		<pubDate>Mon, 18 Apr 2011 18:12:27 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.nukleo.fr/blog/?p=33</guid>
		<description><![CDATA[Traditionnellement la liste des articles d&#8217;un blog sont affichés les uns à la suite des autres, de haut en bas (comme sur ce blog). Pour diverses raisons (design, optimisation de l&#8217;espace, utilisation spécifique de WordPress etc&#8230;) on pourrait souhaiter les afficher en colonne. Voici une méthode simple pour y arriver. Voici ce que l&#8217;on veut<br /><a href="https://www.nukleo.fr/blog/afficher-articles-colonne-wordpress/">Lire l'article</a>]]></description>
			<content:encoded><![CDATA[<p>Traditionnellement la liste des articles d&rsquo;un blog sont affichés les uns à la suite des autres, de haut en bas (comme sur ce blog). Pour diverses raisons (design, optimisation de l&rsquo;espace, utilisation spécifique de WordPress etc&#8230;) on pourrait souhaiter les afficher en colonne. Voici une méthode simple pour y arriver. <span id="more-33"></span></p>
<p>Voici ce que l&rsquo;on veut obtenir : afficher sur la page d&rsquo;accueil la liste des articles (ou les extraits) dans 2 colonnes, avec les plus récents en haut. Pour y parvenir nous utiliserons l&rsquo;opérateur modulo de PHP et de la fonction <a href="http://codex.wordpress.org/Function_Reference/rewind_posts">rewind_posts()</a> de WordPress.</p>
<p><img src="http://www.nukleo.fr/blog/wp-content/uploads/2011/04/wp-post-colonne1.png" alt="Afficher les articles de WordPress en colonne" title="Ce que nous souhaitons obtenir" width="620" height="371" class="alignnone size-full wp-image-34" /></p>
<h3>Le problème</h3>
<p>On pourrait tout simplement utiliser la propriété float de CSS pour arriver à nos fins et ça fonctionnerai parfaitement dans le cas de figure où <strong>tous les blocs</strong> contenant les articles <strong>ont la même hauteur</strong> (comme dans l&rsquo;image précédente).</p>
<p>Mais il est très probable que ça ne soit pas le cas : la hauteur de chaque bloc va varier en fonction de son contenu (l&rsquo;extrait ou l&rsquo;article). Dans ce cas de figure il y aura 2 problèmes : l&rsquo;espacement aléatoire entre les blocs (en hauteur) et le non respect de l&rsquo;ordre chronologique :</p>
<p><img src="http://www.nukleo.fr/blog/wp-content/uploads/2011/04/wp-post-colonne2.png" alt="Espacement aléatoire et ordre non respecté avec float" title="Les blocs sont dans le désordre et l'espacement vertical incorrect" width="620" height="371" class="alignnone size-full wp-image-35" /><br />
Ce n&rsquo;est pas un bug mais seulement la manière dont fonctionnent les éléments &laquo;&nbsp;floatants&nbsp;&raquo;.</p>
<p>Pour résoudre le problème d&rsquo;espacement on pourrait utiliser 2 div pour créer les colonnes et y insérer nos articles, mais dans ce cas l&rsquo;ordre chronologique des articles se fera de haut en bas, colonne par colonne (voir l&rsquo;image ci-dessous). Hors nous voulons que les 2 derniers articles soient en haut de la page.</p>
<p><img src="http://www.nukleo.fr/blog/wp-content/uploads/2011/04/wp-post-colonne3.png" alt="Espacement corrigé mais l'ordre n'est pas celui attendu" title="Espacement corrigé mais l'ordre n'est pas celui attendu" width="620" height="371" class="alignnone size-full wp-image-36" /></p>
<h3>La solution</h3>
<p>Nous utiliserons tout de même les 2 div pour créer nos colonnes, c&rsquo;est au niveau de la boucle de WordPress que nous agirons pour respecter la chronologie de nos articles.</p>
<p>Voici la structure HTML de base que nous utiliserons:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div id=&quot;page&quot;&gt;
	
	&lt;div id=&quot;header&quot;&gt;&lt;/div&gt;
	
	&lt;div id=&quot;contenu&quot; class=&quot;clearfix&quot;&gt;
		&lt;div class=&quot;colonne&quot;&gt;&lt;/div&gt;
		&lt;div class=&quot;colonne&quot;&gt;&lt;/div&gt;
	&lt;/div&gt;
	
	&lt;div id=&quot;sidebar&quot; class=&quot;clearfix&quot;&gt;&lt;/div&gt;
	
	&lt;div id=&quot;footer&quot;&gt;&lt;/div&gt;
	
&lt;/div&gt;
</pre>
<p>Les règles CSS qui vont avec :</p>
<pre class="brush: css; title: ; notranslate">
#page { width: 960px; margin: 0 auto }
#header { padding: 10px; margin: 20px 0 }
#contenu { width: 660px; float: left }
.colonne { width: 300px; margin-right: 30px; float: left }
#sidebar { width: 300px; float: right }
#footer { padding: 10px; margin: 20px 0 }
.clearfix:after { visibility: hidden; display: block; font-size: 0; content: &quot; &quot;; clear: both; height: 0; }
</pre>
<p>J&rsquo;ai mis la structure complète mais ce qui nous intéresse ici c&rsquo;est surtout le contenu de la div #contenu</p>
<h3>Le template WordPress</h3>
<p>Dans le cas d&rsquo;un blog classique il n&rsquo;y a qu&rsquo;une seule boucle pour afficher les articles. Pour ce que nous souhaitons réaliser on pourrait utiliser 2 boucles sur mesure, mais ce n&rsquo;est pas nécessaire et utiliserai inutilement plus de ressources (2 requêtes MySql au lieu d&rsquo;une seule, plus de mémoire) et de temps.<br />
Nous utiliserons la fonction <a href="http://codex.wordpress.org/Function_Reference/rewind_posts">rewind_posts()</a> qui permet de revenir au début de la boucle pour ensuiter la parcourir à nouveau. L&rsquo;astuce réside dans la manière dont nous allons la traiter : grâce à l&rsquo;opérateur modulo nous filtrerons l&rsquo;affichage (ou non) des articles&#8230;</p>
<p>Dans le template de la page d&rsquo;accueil :</p>
<pre class="brush: php; html-script: true; title: ; notranslate">
&lt;div id=&quot;contenu&quot; class=&quot;clearfix&quot; &gt;

	&lt;!-- 1ere colonne --&gt;
	&lt;div class=&quot;colonne&quot;&gt;
		&lt;?php
		// variable qui servira pour filtrer l'affichage des posts
		// et qui sera incrémentée à chaque itération
		$i = 1;
		if( have_posts() ) :
			while( have_posts() ) :
				the_post();

				// s'il ne s'agit pas du 1er article dans la série de 2
				// on passe à l'itération suivante sans rien afficher
				if( $i%2 != 1 ) :
					$i++; // incrémente le compteur
					continue; // on passe directement à l'itération suivante

				else : // pas nécessaire mais clarifie le fonctionnement ?&gt;

					&lt;div class=&quot;article&quot;&gt;
						&lt;h2&gt;&lt;?php the_title(); ?&gt;&lt;/h2&gt;
						&lt;?php the_excerpt(); // le résumé de l'article ?&gt;
					&lt;/div&gt;

				&lt;?php
				endif; // fin if $i%2
				$i++; // incrémente le compteur
			endwhile; // fin boucle while
		endif; // fin if have_posts() ?&gt;

		&lt;?php
		// on se remet au début de la boucle des articles 
		// pour pouvoir la traiter à nouveau
		rewind_posts();
		?&gt;
	&lt;/div&gt;&lt;!-- fin 1ere colonne --&gt;

	&lt;!-- 2eme colonne --&gt;
	&lt;div class=&quot;colonne&quot;&gt;
		&lt;?php
		$i = 1; // variable qui servira pour filtrer l'affichage des posts
		if( have_posts() ) :
			while( have_posts() ) :
				the_post();

				// s'il ne s'agit pas du 2eme article dans la série de 2
				// on passe à l'itération suivante sans rien afficher
				if( $i%2 != 0 ) :
					$i++; // incrémente le compteur
					continue; // on passe directement à l'itération suivante

				else : ?&gt;

					&lt;div class=&quot;article&quot;&gt;
						&lt;h2&gt;&lt;?php the_title(); ?&gt;&lt;/h2&gt;
						&lt;?php the_excerpt(); // le résumé de l'article ?&gt;
					&lt;/div&gt;

				&lt;?php
				endif; // fin if $i%2
				$i++; // incrémente le compteur
			endwhile; // fin boucle while
		endif; // fin if have_posts() ?&gt;

	&lt;/div&gt;&lt;!-- fin 2eme colonne --&gt;

&lt;/div&gt;&lt;!-- fin #contenu --&gt;
</pre>
<p>Et voila, nous sommes arrivé à notre résultat ! Bien évidemment on pourrait vouloir 3 colonnes d&rsquo;articles : l&rsquo;opération est la même sauf que l&rsquo;on utilisera $i % 3 au lieu de $i % 2 — Le diviseur servant à déterminer le nombre d&rsquo;articles a ne pas afficher et sera égal au nombre de colonnes.<br />
Il faudra également dupliquer tout le bloc de code pour ajouter la 3e colonne, sans oublier rewind_posts() à la fin de la 2e colonne ni de changer la valeur de test du modulo pour la 2e colonne ( if( $i%3 != 2 ) ).</p>
<h4>A propos du modulo</h4>
<p>Si vous ne savez pas ou ne vous souvenez pas du fonctionnement de modulo, voici l&rsquo;explication :<br />
On divise le chiffre de gauche par celui de droite et le <strong>résultat ne tient compte que du chiffre entier obtenu</strong> (donc sans chiffre après la virgule). Ce calcul retourne <strong>le reste de cette division</strong> (donc un entier également).<br />
Par exemple 1 % 3 = 1 car 1 / 3 = 0 et il reste 1<br />
Ceci est très pratique lorsque l&rsquo;on doit faire quelque chose de particulier toutes les X itérations.</p>
<h3>Conclusion</h3>
<p>Nous avons pu obtenir la liste de nos articles sur 2 colonnes sans utiliser inutilement de ressources supplémentaires. Autre avantage de cette technique : elle <strong>respecte le réglage du nombre de posts à afficher</strong> dans le tableau de bord de WordPress.</p>
<p>Happy coding :)</p>
]]></content:encoded>
			<wfw:commentRss>https://www.nukleo.fr/blog/afficher-articles-colonne-wordpress/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>L&#8217;importance de commenter son code</title>
		<link>https://www.nukleo.fr/blog/importance-de-commenter-son-code/</link>
		<comments>https://www.nukleo.fr/blog/importance-de-commenter-son-code/#comments</comments>
		<pubDate>Tue, 05 Apr 2011 06:29:16 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Netbeans]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.nukleo.fr/blog/?p=30</guid>
		<description><![CDATA[On ne le dira jamais assez, il est important &#8211; voir crucial &#8211; de correctement commenter le code qu&#8217;on écrit. Dans certains cas le bénéfice sera immédiat, dans tous les cas c&#8217;est sur le moyen/long terme que le bénéfice se fera ressentir… Pourquoi commenter ? Les intérêts sont multiples et variés allant du simple &#171;&#160;j&#8217;en<br /><a href="https://www.nukleo.fr/blog/importance-de-commenter-son-code/">Lire l'article</a>]]></description>
			<content:encoded><![CDATA[<p>On ne le dira jamais assez, il est important &#8211; voir crucial &#8211; de correctement commenter le code qu&rsquo;on écrit. Dans certains cas le bénéfice sera immédiat, dans tous les cas c&rsquo;est sur le moyen/long terme que le bénéfice se fera ressentir…<span id="more-30"></span></p>
<h3>Pourquoi commenter ?</h3>
<p>Les intérêts sont multiples et variés allant du simple &laquo;&nbsp;j&rsquo;en suis là&nbsp;&raquo; à la fin de la journée jusqu&rsquo;à la documentation d&rsquo;une application.</p>
<h4>Commenter pour comprendre ce qu&rsquo;on a fait</h4>
<p>Lors d&rsquo;une session de développement on est souvent confronté à un problème nouveau à gérer et la solution n&rsquo;est pas forcément toujours évidente. On fait quelques recherches, on trouve une solution ou l&rsquo;inspiration pour la créer et on l&rsquo;intègre. Tout fonctionne, c&rsquo;est parfait, on est content.<br />
3 mois plus tard on doit revenir dessus car il faut améliorer la fonction en y intégrant de nouveaux paramètres ou s&rsquo;en resservir pour un autre projet, et là c&rsquo;est le drame : on ne comprend plus comment ça fonctionne, voire même à quoi sert ladite fonction… Les 30 secondes nécessaires à écrire les quelques commentaires salutaires nous auraient permises d&rsquo;éviter une décapilarisation crânienne subite et la perte de pas mal de temps.</p>
<h4>Commenter pour expliquer aux autres</h4>
<p>On peut travailler en équipe sur un projet et d&rsquo;autres développeurs risquent d&rsquo;avoir à intervenir sur votre code pendant que vous faites autre chose. Autre cas de figure : vous développez seul un projet puis un peu plus tard c&rsquo;est un autre développeur qui le reprend ou qui vous rejoin dessus. Vous pouvez également être en train de développer un script/module/librairie/application destiné(e) à être partagé(e) avec d&rsquo;autres (dans le cadre d&rsquo;open source par exemple).<br />
Encore une fois, le temps passé à commenter le code évitera aux autres d&rsquo;être complètement perdus à la lecture de votre chef d&rsquo;oeuvre. Ceci est d&rsquo;autant plus vrai que chaque développeur a son style et sa manière de coder et qui, bien souvent, n&rsquo;est limpide que pour lui-même…</p>
<h4>Commenter pour se faciliter la tâche</h4>
<p>Les IDE de qualité sont capable de lire les commentaires <a href="http://en.wikipedia.org/wiki/PHPDoc">DocBlock</a> et de s&rsquo;en servir pour afficher, lors de la saisie, les informations d&rsquo;utilisation que vous avez pris le soin d&rsquo;entrer. Dans le cadre du développement d&rsquo;une application répartie en plusieurs fichiers (souvent le cas en POO ou en utilisant un framework), les commentaires révèlent toute leur puissance en vous évitant de replonger dans le code d&rsquo;une fonction pour retrouver quels arguments lui passer ou encore ce qu&rsquo;elle retourne.<br />
Ce type de commentaire peut aussi être utilisé pour l&rsquo;écriture automatique de la documentation d&rsquo;une API, par exemple, à l&rsquo;aide d&rsquo;un générateur de documentation tel que <a href="http://www.phpdoc.org/">PHPdocumentor</a> ou <a href="http://en.wikipedia.org/wiki/Doxygen">Doxygen</a></p>
<h3>Les différents types de commentaires</h3>
<p>Il existe 3 types de commentaires : ligne simple, multiligne et DocBlock. Les 2 premiers ne servent qu&rsquo;à indiquer des informations courtes au sein même du code alors que le DocBlock permettra aux IDE et générateurs de documentation d&rsquo;en faire bien plus.</p>
<p>Les commentaires simples et multilignes se présentent de la manière suivante :</p>
<pre class="brush: php; title: ; notranslate">
// je suis un commentaire sur une seule ligne
/* je suis
un commentaire
sur plusieurs lignes */
</pre>
<p>Le commentaire DocBlock se présente ainsi :</p>
<pre class="brush: php; title: ; notranslate">
/**
 * Cette fonction sert à faire ceci...
 * un commentaire
 * sur plusieurs lignes
 *
 * @param string $text Description du paramètre
 * @param int $id Description du paramètre
 * @return bool Description de ce que retourne (ou non) la fonction
*/
</pre>
<p>Notez l&rsquo;utilisation de certains mots clés (@param, @return) dont vous trouverez <a href="http://manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_tags.pkg.html">la liste complète ici</a>. C&rsquo;est précisément ces mots-clés qui permettrons à l&rsquo;IDE et au générateur de documentation de travailler.</p>
<h4>Un exemple d&rsquo;utilisation</h4>
<p>Voici un petit exemple d&rsquo;utilisation des 3 types de commentaires dans un modèle du framework <a href="http://codeigniter.com/">CodeIgniter</a> :</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php

class Blog_model extends CI_Model {

	// constructeur
	function __construct() {
		parent::__construct();
	}

	/**
	 * Recupération des derniers posts de wordpress
	 *
	 * @param	int $count	Le nombre de posts que l'on veut afficher (optionnel)
	 * @return	object		Les posts à afficher
	 */
	function get_latest_posts($count = 5) {
		// requete mysql à l'aide d'ActiveRecord
		$this-&gt;db-&gt;select('post_title, post_name');
		$this-&gt;db-&gt;where('post_status', 'publish');
		$this-&gt;db-&gt;where('post_type', 'post');
		$this-&gt;db-&gt;limit($count);
		$this-&gt;db-&gt;order_by('ID', 'desc');

		$query = $this-&gt;db-&gt;get('wp_posts');
		
		/* on récupère les posts
		sous forme d'objet */
		$data = $query-&gt;result();

		//var_dump($data); exit; // test des résultats obtenus
		
		// renvoi des résultats au controlleur
		return $data;
	}

}
</pre>
<p>J&rsquo;ai eu la main un peu lourde ici mais en même temps il vaut mieux trop de commentaires que pas assez !</p>
<h3>Conclusion</h3>
<p>Il y a peu de temps j&rsquo;ai eu l&rsquo;occasion d&rsquo;intervenir sur un gros projet de CRM/ERP qui était quasiment abouti et dont le développeur a du se retirer. Malheureusement il n&rsquo;avait pas jugé utile de commenter son code et la conséquence directe à été une grosse perte de temps pour moi (le temps de comprendre le fonctionnement) et une grosse perte de temps et d&rsquo;argent pour le client car il a du supporter le coût de &laquo;&nbsp;temps de compréhension&nbsp;&raquo; du code existant en plus du temps de développement nécessaire au résultat demandé&#8230;<br />
Pour faire bref, <strong>passez un peu de temps à commenter votre code</strong> &#8211; votre client, les utilisateurs de votre code et vous-même ne vous remercieront jamais assez !</p>
]]></content:encoded>
			<wfw:commentRss>https://www.nukleo.fr/blog/importance-de-commenter-son-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Supprimer index.php des urls de CodeIgniter</title>
		<link>https://www.nukleo.fr/blog/supprimer-index-php-url-codeigniter/</link>
		<comments>https://www.nukleo.fr/blog/supprimer-index-php-url-codeigniter/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 07:07:07 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[HTaccess]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.nukleo.fr/blog/?p=21</guid>
		<description><![CDATA[Lors d&#8217;une installation de base du framework CodeIgniter, les urls des pages se présentent sous la forme de &#171;&#160;http://mon-site.com/index.php/controlleur&#160;&#187;. Pour plusieurs raisons (urls plus &#171;&#160;esthétiques&#160;&#187;, référencement&#8230;) on pourrait souhaiter supprimer le vilain index.php. Voici comment. HTaccess à la rescousse ! La première étape consiste à créer un fichier .htaccess que l&#8217;on placera à la racine<br /><a href="https://www.nukleo.fr/blog/supprimer-index-php-url-codeigniter/">Lire l'article</a>]]></description>
			<content:encoded><![CDATA[<p>Lors d&rsquo;une installation de base du framework CodeIgniter, les urls des pages se présentent sous la forme de &laquo;&nbsp;http://mon-site.com/index.php/controlleur&nbsp;&raquo;. Pour plusieurs raisons (urls plus &laquo;&nbsp;esthétiques&nbsp;&raquo;, référencement&#8230;) on pourrait souhaiter supprimer le vilain <strong>index.php.</strong> Voici comment.</p>
<p><span id="more-21"></span></p>
<h3>HTaccess à la rescousse !</h3>
<p>La première étape consiste à créer un fichier <strong>.htaccess</strong> que l&rsquo;on placera à la racine du site. Il faut noter que dans le monde unixien les fichiers commençants par un point sont invisibles. Si cela pose un problème il suffira de nommer le fichier htaccess.txt puis de le renommer une fois transféré sur le serveur.</p>
<p>Contenu du fichier .htaccess :</p>
<pre class="brush: plain; title: ; notranslate">
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 
</pre>
<p>Ces directives indiquent au serveur Apache de rediriger toute requete qui ne cible pas un dossier ou un fichier spécifique vers le fichier index.php et de lui passer en argument tout ce qui suit le nom de domaine. En clair, une url du type <strong>&laquo;&nbsp;http://mon-site.com/contact&nbsp;&raquo;</strong> sera redirigée vers <strong>&laquo;&nbsp;http://mon-site.com/index.php/contact.</strong></p>
<p>Bien sûr on peut intégrer des directives plus élaborées mais ce n&rsquo;est pas nécessaire si l&rsquo;on ne cherche qu&rsquo;à supprimer l&rsquo;infâme index.php</p>
<h3>Modification du fichier de configuration</h3>
<p>Il faut ensuite modifier le fichier <strong>/system/application/config/config.php</strong> en changeant la ligne</p>
<pre class="brush: php; title: ; notranslate">
$config['index_page'] = &quot;index.php&quot;;
</pre>
<p>en :</p>
<pre class="brush: php; title: ; notranslate">
$config['index_page'] = &quot;&quot;;
</pre>
<p>Et voila, plus d&rsquo;index.php !</p>
]]></content:encoded>
			<wfw:commentRss>https://www.nukleo.fr/blog/supprimer-index-php-url-codeigniter/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Créer simplement un template de page dans CodeIgniter</title>
		<link>https://www.nukleo.fr/blog/template-page-codeigniter/</link>
		<comments>https://www.nukleo.fr/blog/template-page-codeigniter/#comments</comments>
		<pubDate>Wed, 29 Dec 2010 19:24:38 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.nukleo.fr/blog/?p=19</guid>
		<description><![CDATA[Voici une manière simple et efficace de créer un (ou plusieurs) template(s) de page pour un site sous CodeIgniter, sans librairie ni plugin. Préambule Nous partirons du principe que nous voulons isoler le (ou les) template(s) du reste des views. Nous partirons également du principe que nous voulons isoler le header et le footer du<br /><a href="https://www.nukleo.fr/blog/template-page-codeigniter/">Lire l'article</a>]]></description>
			<content:encoded><![CDATA[<p>Voici une manière simple et efficace de créer un (ou plusieurs) template(s) de page pour un site sous CodeIgniter, sans librairie ni plugin.<br />
<span id="more-19"></span></p>
<h3>Préambule</h3>
<p>Nous partirons du principe que nous voulons isoler le (ou les) template(s) du reste des views. Nous partirons également du principe que nous voulons isoler le header et le footer du template pour plus de flexibilité, et notamment pouvoir créer plusieurs templates dont le corps principal est différent (avec ou sans sidebar par exemple).</p>
<h3>Le template HTML</h3>
<p>Dans le répertoire <strong>/application/views</strong> créez un dossier nommé &laquo;&nbsp;<strong>templates</strong>&laquo;&nbsp;. C&rsquo;est dans celui-ci que nous placerons les fichiers de notre template. Il y aura 3 fichiers : <strong>&laquo;&nbsp;template.php&nbsp;&raquo;, &laquo;&nbsp;header.php&nbsp;&raquo; et &laquo;&nbsp;footer.php&nbsp;&raquo;.</strong></p>
<h4>template.php</h4>
<p>Le fichier le plus simple dont le contenu peut se résumer à ceci : </p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
$this-&gt;load-&gt;view(&quot;templates/header&quot;); 
$this-&gt;load-&gt;view($contents);
$this-&gt;load-&gt;view(&quot;templates/footer&quot;); 
?&gt;
</pre>
<p><strong>Vous remarquerez 3 choses :</strong></p>
<ul>
<li><strong>&laquo;&nbsp;templates/&nbsp;&raquo;</strong> correspond au dossier que nous avons créé dans le répertoire &laquo;&nbsp;application/views&nbsp;&raquo;.</li>
<li>Nous <strong>omettons l&rsquo;extension</strong> des fichiers &laquo;&nbsp;header.php&nbsp;&raquo; et &laquo;&nbsp;footer.php&nbsp;&raquo;,  car c&rsquo;est CodeIgniter qui l&rsquo;ajoutera.</li>
<li><strong>$contents</strong> est une variable (dont le nom importe peu) qui sera définie dans le controlleur et correspondra à la view qui remplira le corps de la page.</li>
</ul>
<h4>header.php</h4>
<p>Ce fichier contiendra la partie haute du site — traditionnellement nommée &laquo;&nbsp;header&nbsp;&raquo; — avec notamment l&rsquo;en-tête de la page (déclarations html, section head) et la navigation du site (ce qui est à peu près la norme actuelle). Voici un exemple de ce que pourrait contenir ce fichier :</p>
<pre class="brush: php; html-script: true; title: ; notranslate">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; lang=&quot;en&quot;&gt;
&lt;head&gt;
	&lt;title&gt;&lt;?php echo $title; ?&gt;&lt;/title&gt;
	&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;
	&lt;meta name=&quot;description&quot; content=&quot;&lt;?php echo $description; ?&gt;&quot; /&gt;
	&lt;meta name=&quot;keywords&quot; content=&quot;&lt;?php echo $keywords; ?&gt;&quot; /&gt;
	&lt;link href=&quot;/css/styles.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;div class=&quot;wrap&quot;&gt;
	&lt;div id=&quot;header&quot;&gt;
 		&lt;a href=&quot;/&quot;&gt;&lt;img src=&quot;/css/img/logo.png&quot; alt=&quot;logo&quot; /&gt;&lt;/a&gt;
		&lt;ul id=&quot;navigation&quot;&gt;
 			&lt;li&gt;&lt;?php echo anchor(base_url(), 'Accueil'); ?&gt;&lt;/li&gt;
			&lt;li&gt;&lt;?php echo anchor('services', 'Services'); ?&gt;&lt;/li&gt;
			&lt;li&gt;&lt;?php echo anchor('about', 'A propos'); ?&gt;&lt;/li&gt;
			&lt;li&gt;&lt;?php echo anchor('contact', 'Contact'); ?&gt;&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/div&gt;&lt;!-- end header --&gt;
</pre>
<p>Là encore rien de compliqué, la seule subtilité tenant dans les variables <strong>$title, $description et $keywords</strong> qui permettrons simplement de définir ces données dans le controlleur&#8230;</p>
<h4>footer.php</h4>
<p>Ce fichier contiendra, vous l&rsquo;aurez deviné, le pied de page ainsi que les balises de fermeture de page. Voici un exemple de contenu :</p>
<pre class="brush: xml; title: ; notranslate">
	&lt;div id=&quot;footer&quot;&gt;
		&lt;p&gt;Informations de copyright&lt;/p&gt;
	&lt;/div&gt;
&lt;/div&gt;&lt;!-- end wrap --&gt;

&lt;/body&gt;
&lt;/html&gt;
</pre>
<h3>Le controlleur</h3>
<p>Récoltons les fruits de notre (dur) labeur ! Dans notre controlleur au lieu d&rsquo;appeler directement une view, nous chargerons celle-ci dans une variable que nous transmettrons à notre template (qui est lui-même une view). par exemple :</p>
<pre class="brush: php; title: ; notranslate">
function about()
{
	// définition des données variables du template
	$data['title'] = 'Le titre de la page';
	$data['description'] = 'La description de la page pour les moteurs de recherche';
	$data['keywords'] = 'les, mots, clés, de, la, page';
	
	// on charge la view qui contient le corps de la page
	$data['contents'] = 'page_contenu_view';

	// on charge la page dans le template
	$this-&gt;load-&gt;view('template', $data);
}
</pre>
<h3>Conclusion</h3>
<p>Et voilà, vous pouvez maintenant créer très rapidement un ou plusieurs templates de pages !</p>
]]></content:encoded>
			<wfw:commentRss>https://www.nukleo.fr/blog/template-page-codeigniter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilisation des vignettes (post thumbnails) de WordPress</title>
		<link>https://www.nukleo.fr/blog/utilisation-thumbnail-wordpress/</link>
		<comments>https://www.nukleo.fr/blog/utilisation-thumbnail-wordpress/#comments</comments>
		<pubDate>Fri, 24 Dec 2010 07:02:22 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.nukleo.fr/blog/?p=11</guid>
		<description><![CDATA[Depuis la version 2.9 de WordPress nous avons à notre disposition les post thumbnails, à savoir des petites vignettes servant à illustrer l&#8217;introduction d&#8217;un article. Elle servent notamment sur la page qui liste les articles mais peuvent être utilisées où bon vous semble. Voici comment activer et utiliser cette fonction. Activation des post thumbnails De<br /><a href="https://www.nukleo.fr/blog/utilisation-thumbnail-wordpress/">Lire l'article</a>]]></description>
			<content:encoded><![CDATA[<p>Depuis la version 2.9 de WordPress nous avons à notre disposition les post thumbnails, à savoir des petites vignettes servant à illustrer l&rsquo;introduction d&rsquo;un article. Elle servent notamment sur la page qui liste les articles mais peuvent être utilisées où bon vous semble. Voici comment activer et utiliser cette fonction. <span id="more-11"></span></p>
<h3>Activation des post thumbnails</h3>
<p>De base la fonctionnalité n&rsquo;est pas active, certainement pour des raisons de rétro-compatibilité. Pour l&rsquo;activer éditez le fichier functions.php de votre thème en ajoutant cette ligne :</p>
<pre class="brush: php; title: ; notranslate">
// activation des post thumbnails si la fonction est disponible (wp 2.9+)
if( function_exists('add_theme_support') ) {
  add_theme_support('post-thumbnails');
}
</pre>
<p>Cette ligne ajoutera dans la sidebar de votre page d&rsquo;édition d&rsquo;article un onglet &lsquo;<strong>Image à la une</strong>&lsquo;. Il suffira de cliquer sur &lsquo;<strong>Mettre une image à la une</strong>&lsquo; pour sélectionner (ou uploader) votre vignette. Je conseille de <strong>créer votre vignette manuellement</strong> pour en maîtriser les dimensions et la qualité.</p>
<h3>Intégration des vignettes</h3>
<p>Pour afficher vos belles vignettes, éditez le fichier contenantt la boucle qui liste vos articles (souvent index.php) en ajoutant à l&rsquo;endroit approprié ceci :</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php if(has_post_thumbnail()) : ?&gt;
&lt;?php the_post_thumbnail( ); ?&gt;
&lt;?php endif; ?&gt;
</pre>
<h3>Paramètres</h3>
<p>Le template tag the_post_thumbnail() accepte des paramètres optionnels permettant de modifier la <strong>taille de la vignette</strong> ainsi que certains attributs : <strong>classe CSS</strong>, les attributs <strong>title</strong> et <strong>alt</strong> ainsi que la <strong>source de l&rsquo;image</strong>. Voir le <a href="http://codex.wordpress.org/Function_Reference/the_post_thumbnail" target="_blank">codex</a> pour en savoir plus.</p>
<h3>Un exemple</h3>
<p>Pour transformer la vignette en lien vers l&rsquo;article et lui donner le titre (alt et title) de l&rsquo;article, utilisez le code suivant :</p>
<pre class="brush: php; html-script: true; title: ; notranslate">
&lt;?php if(has_post_thumbnail()) : ?&gt;
&lt;a href=&quot;&lt;?php the_permalink() ?&gt;&quot;
&lt;?php the_post_thumbnail( '', array('alt' =&gt; $post-&gt;post_title, 'title' =&gt; $post-&gt;post_title) ); ?&gt;
&lt;/a&gt;
&lt;?php endif; ?&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>https://www.nukleo.fr/blog/utilisation-thumbnail-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeIgniter + WordPress : afficher les derniers posts</title>
		<link>https://www.nukleo.fr/blog/codeigniter-wordpress-afficher-derniers-posts/</link>
		<comments>https://www.nukleo.fr/blog/codeigniter-wordpress-afficher-derniers-posts/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 08:06:04 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.nukleo.fr/blog/?p=7</guid>
		<description><![CDATA[Ajouter un blog WordPress à un site conçu avec CodeIgniter est très simple. Récupérer les derniers posts de WordPress pour les afficher dans CodeIgniter l&#8217;est aussi, voici comment. Préambule Nous utiliserons une structure de permaliens assez classique sous la forme de &#171;&#160;monsite.com/blog/le-nom-du-post&#160;&#187;. Si ce n&#8217;est pas le cas, il faudra adapter la requete mysql dans<br /><a href="https://www.nukleo.fr/blog/codeigniter-wordpress-afficher-derniers-posts/">Lire l'article</a>]]></description>
			<content:encoded><![CDATA[<p>Ajouter un blog WordPress à un site conçu avec CodeIgniter est très simple. Récupérer les derniers posts de WordPress pour les afficher dans CodeIgniter l&rsquo;est aussi, voici comment.<br />
<span id="more-7"></span></p>
<h3>Préambule</h3>
<p>Nous utiliserons une structure de permaliens assez classique sous la forme de &laquo;&nbsp;monsite.com/blog/le-nom-du-post&nbsp;&raquo;. Si ce n&rsquo;est pas le cas, il faudra adapter la requete mysql dans le model de Codeigniter. Un petit tour dans le gestionnaire de base de données permettra aisément de repérer les colonnes à utiliser.</p>
<h3>Le model</h3>
<p>Comme souvent dans Codeigniter, le gros du travail se situe dans le model. Nous allons créer le fichier &lsquo;application/models/blog_model.php&rsquo; qui contiendra ce qui suit (à noter que le code est lourdement commenté pour plus de précision) : </p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
class Blog_model extends Model {
  function __construct() {
    parent::Model();
  }

  /**
   * Recupération des derniers posts de wordpress
   *
   * @param $count Le nombre de posts (par defaut : 5)
   */
  function get_latest_posts($count = 5) {
    // les colonnes à récupérer : à adapter à la structure des permaliens de WordPress
    $this-&gt;db-&gt;select('post_title, post_name');
    // on ne récupère que les posts qui sont publiés
    $this-&gt;db-&gt;where('post_status', 'publish');
    // on ne récupère que les posts
    $this-&gt;db-&gt;where('post_type', 'post');
    // nombre de posts à récupérer
    $this-&gt;db-&gt;limit($count);
    // ordre décroissant pour avoir les derniers posts en premier
    $this-&gt;db-&gt;order_by('ID', 'desc');

    // wp_posts = la table par défaut contenant les posts de WordPress : à adapter à votre configuration
    $query = $this-&gt;db-&gt;get('wp_posts');
    // on effectue la requete dont le résultat sera un objet. Si l'on veut un tableau on utilisera la fonction result_array()
    $data = $query-&gt;result();

    // renvoi des données au controller
    return $data;
  }
}
</pre>
<h3>Le controlleur</h3>
<p>Dans notre controller il suffira d&rsquo;appeler la fonction &lsquo;get_latest_posts()&rsquo; en attribuant sa valeur de retour à une entrée du tableau (array) des valeur transmises à la vue.</p>
<pre class="brush: php; title: ; notranslate">
// si le model n'est pas en autoload, il faut le charger dans le controlleur
$this-&gt;load-&gt;model('blog_model');
// $data est le tableau de données transmis à la vue, $blog_posts sera la variable disponible dans la vue
// get_latest_posts(10) indique que nous voulons récupérer les 10 derniers posts
$data['blog_posts'] = $this-&gt;blog_model-&gt;get_latest_posts(10);
// on charge la vue et transmet les données à celle-ci
$this-&gt;load-&gt;view('ma_view', $data);
</pre>
<h3>La vue</h3>
<p>Finalement dans la vue il suffit de faire une boucle sur la variable $blog_posts pour afficher les X derniers posts de WordPress.</p>
<pre class="brush: php; html-script: true; title: ; notranslate">
&lt;div&gt;
  &lt;h2&gt;Derniers articles du blog&lt;/h2&gt;
    &lt;ul&gt;
      &lt;?php foreach($blog_posts as $post) : ?&gt;
      &lt;li&gt;&lt;a href=&quot;blog/&lt;?php echo $post-&gt;post_name; ?&gt;&quot;&gt;&lt;?php echo $post-&gt;post_title; ?&gt;&lt;/a&gt;&lt;/li&gt;
     &lt;?php endforeach; ?&gt;
   &lt;/ul&gt;
&lt;/div&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>https://www.nukleo.fr/blog/codeigniter-wordpress-afficher-derniers-posts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
