<?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>Julien Appert &#187; Trucs et astuces</title>
	<atom:link href="http://julienappert.com/category/trucs-et-astuces/feed" rel="self" type="application/rss+xml" />
	<link>http://julienappert.com</link>
	<description>Développeur / intégrateur web indépendant</description>
	<lastBuildDate>Mon, 14 May 2012 10:18:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Modifier la traduction d&#8217;un plugin</title>
		<link>http://julienappert.com/modifier-la-traduction-dun-plugin-wordpress.html</link>
		<comments>http://julienappert.com/modifier-la-traduction-dun-plugin-wordpress.html#comments</comments>
		<pubDate>Sat, 14 Apr 2012 23:18:33 +0000</pubDate>
		<dc:creator>Julien Appert</dc:creator>
				<category><![CDATA[Trucs et astuces]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[traduction]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://julienappert.com/?p=459</guid>
		<description><![CDATA[La plupart du temps (et c&#8217;est une bonne chose), les plugins pour WordPress fournissent des fichiers contenant leur traduction dans un certain nombre de langues. Seulement voilà, on souhaite parfois adapter cette traduction pour un besoin spécifique. La solution la plus simple est alors de modifier directement le fichier correspondant à notre langue. Mais c&#8217;est [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://julienappert.com/wordpress/wp-content/uploads/2012/04/traduire-plugin-wordpress.jpg" alt="" title="traduire-plugin-wordpress" width="550" height="257" class="aligncenter size-full wp-image-464 shadow" />
<p>La plupart du temps (et c&#8217;est une bonne chose), les plugins pour WordPress fournissent des fichiers contenant leur traduction dans un certain nombre de langues. Seulement voilà, <strong>on souhaite parfois adapter cette traduction pour un besoin spécifique</strong>. La solution la plus simple est alors de modifier directement le fichier correspondant à notre langue. Mais c&#8217;est une erreur et ce pour une raison évidente : lorsque vous (ou la personne qui passera derrière vous) lancerez la mise à jour du plugin, <strong>votre modification sera purement et simplement écrasée</strong>.</p>
<p>La meilleure solution est donc de <strong>surcharger la traduction avec votre propre fichier</strong>, que vous placerez au choix dans votre template ou dans un plugin maison.</p>
<p>Première chose à faire : relever le domaine d&#8217;application de la traduction. Pour ce faire, allez faire un tour dans le fichier php principal du plugin et cherchez une ligne similaire à celle-ci : </p>
<pre>load_plugin_textdomain('domaine', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/');</pre>
<p>Le premier paramètre de cette fonction est le domaine qui nous intéresse. Ouvrez ensuite le fichier functions.php de votre template (ou le fichier php de votre plugin maison), et copiez le code suivant :</p>
<pre>
add_action( 'after_setup_theme', 'changeLanguage' );
function changeLanguage(){
  unload_textdomain( 'domaine' );
  load_plugin_textdomain('domaine', false, '../themes/nomDeMonTemplate/languages/');
}
</pre>
<p>Le fait d&#8217;appeler l&#8217;action &#8216;after_setup_theme&#8217; nous assure que la fonction changeLanguage() sera bien lancée après le chargement du plugin dont on souhaite modifier la traduction. La fonction unload_textdomain() va, comme son nom l&#8217;indique, décharger (et donc ne plus tenir compte de) la traduction fournie par le plugin. Puis on charge le nouveau fichier de traduction grâce à la fonction load_plugin_textdomain().</p>
<p>Une fois ce code placé au bon endroit, il ne vous reste plus qu&#8217;à copier/coller le fichier .po de la traduction originale à l&#8217;endroit de votre choix (que vous avez défini comme 3e paramètre de la fonction load_plugin_textdomain()), l&#8217;ouvrir, le modifier et le sauvegarder à l&#8217;aide du logiciel poedit. Et le tour est joué !</p>
<p>Désormais, vous pourrez mettre à jour les plugins installés sur votre WordPress sans crainte de perdre vos traductions maison.</p>
<p><a href="http://www.flickr.com/photos/tarvalanion/2891125307/"><small>crédit image</small></a></p>
]]></content:encoded>
			<wfw:commentRss>http://julienappert.com/modifier-la-traduction-dun-plugin-wordpress.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Désactiver la barre d&#8217;administration WordPress</title>
		<link>http://julienappert.com/desactiver-la-barre-d-administration-wordpress.html</link>
		<comments>http://julienappert.com/desactiver-la-barre-d-administration-wordpress.html#comments</comments>
		<pubDate>Fri, 15 Apr 2011 09:06:09 +0000</pubDate>
		<dc:creator>Julien Appert</dc:creator>
				<category><![CDATA[Trucs et astuces]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://julienappert.com/?p=442</guid>
		<description><![CDATA[Si vous avez effectué la mise à jour vers WordPress 3.1, vous avez sûrement noté la présence nouvelle d&#8217;une barre d&#8217;administration en haut de votre site. Très pratique, elle vous permet d&#8217;accéder rapidement aux pages principales de votre administration. Mais enfin, peut-être qu&#8217;elle vous dérange plus qu&#8217;autre chose, cette barre. Et après tout, vous êtes [...]]]></description>
			<content:encoded><![CDATA[<p>Si vous avez effectué la mise à jour vers WordPress 3.1, vous avez sûrement noté la présence nouvelle d&#8217;une barre d&#8217;administration en haut de votre site. Très pratique, elle vous permet d&#8217;accéder rapidement aux pages principales de votre administration. </p>
<p>Mais enfin, peut-être qu&#8217;elle vous dérange plus qu&#8217;autre chose, cette barre. Et après tout, vous êtes maître chez vous. Voici donc une ligne de code à placer dans le fichier functions.php de votre thème :</p>
<pre>show_admin_bar( false );</pre>
<p>Et la barre disparait !</p>
]]></content:encoded>
			<wfw:commentRss>http://julienappert.com/desactiver-la-barre-d-administration-wordpress.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Supprimer les flux RSS dans WordPress</title>
		<link>http://julienappert.com/supprimer-les-flux-rss-dans-wordpress.html</link>
		<comments>http://julienappert.com/supprimer-les-flux-rss-dans-wordpress.html#comments</comments>
		<pubDate>Tue, 22 Mar 2011 15:37:33 +0000</pubDate>
		<dc:creator>Julien Appert</dc:creator>
				<category><![CDATA[Trucs et astuces]]></category>
		<category><![CDATA[flux rss]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://julienappert.com/?p=421</guid>
		<description><![CDATA[Les flux RSS sont certes très pratiques, mais si vous utilisez WordPress pour motoriser un site vitrine, ils n&#8217;ont plus aucun intérêt. Malheureusement, WordPress ne permet pas de désactiver ces derniers via son interface de configuration. Il faut donc mettre les mains dans le code pour arriver à nos fins. Les codes suivants sont à [...]]]></description>
			<content:encoded><![CDATA[<p>Les flux RSS sont certes très pratiques, mais si vous utilisez WordPress pour motoriser un site vitrine, ils n&#8217;ont plus aucun intérêt. Malheureusement, WordPress ne permet pas de désactiver ces derniers via son interface de configuration. Il faut donc mettre les mains dans le code pour arriver à nos fins. Les codes suivants sont à ajouter dans le fichier functions.php de votre thème.</p>
<p>Tout d&#8217;abord, il convient de désactiver les flux eux-mêmes :</p>
<pre>
add_action('do_feed', 'disable_feed', 1);
add_action('do_feed_rdf', 'disable_feed', 1);
add_action('do_feed_rss', 'disable_feed', 1);
add_action('do_feed_rss2', 'disable_feed', 1);
add_action('do_feed_atom', 'disable_feed', 1);

function disable_feed(){
     wp_die('Les flux RSS pour ce site sont désactivés.');
}
</pre>
<p>Grâce au code ci-dessus, les différentes pages de flux afficheront uniquement votre message.</p>
<p>Ensuite, il faut supprimer les liens d&#8217;abonnement. Si vous êtes parti d&#8217;un thème existant pour réaliser votre site, il y a de fortes chances que vous trouviez la ligne suivante, quelque part dans le fichier functions.php :</p>
<pre>add_theme_support( 'automatic-feed-links' );</pre>
<p>Si c&#8217;est le cas, supprimez la ligne et les liens pour s&#8217;abonner aux flux disparaitront.</p>
<p>Dernier point, le flux des commentaires. Lorsque vous affichez un article avec WordPress, le flux des commentaires de l&#8217;article s&#8217;ajoute à la liste des abonnements. Vous souhaitez le supprimer ? Copiez le code suivant :</p>
<pre>
function remove_rss() {
    return;
}
add_filter('post_comments_feed_link','remove_rss');
</pre>
<p> d&#8217;</p>
]]></content:encoded>
			<wfw:commentRss>http://julienappert.com/supprimer-les-flux-rss-dans-wordpress.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress et la disparition de l&#8217;éditeur wysiwyg</title>
		<link>http://julienappert.com/wordpress-et-la-disparition-de-lediteur-wysiwyg.html</link>
		<comments>http://julienappert.com/wordpress-et-la-disparition-de-lediteur-wysiwyg.html#comments</comments>
		<pubDate>Wed, 16 Mar 2011 20:48:40 +0000</pubDate>
		<dc:creator>Julien Appert</dc:creator>
				<category><![CDATA[Trucs et astuces]]></category>
		<category><![CDATA[mise à jour]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wysiwyg]]></category>

		<guid isPermaLink="false">http://julienappert.com/?p=419</guid>
		<description><![CDATA[En écrivant l&#8217;article précédent, je me suis rendu compte que l&#8217;éditeur wysiwyg de wordpress avait disparu. J&#8217;utilise toujours l&#8217;éditeur HTML, donc ce n&#8217;est pas franchement un problème, mais tout de même. Après une rapide recherche sur Google, j&#8217;ai compris que l&#8217;erreur provenait de la dernière mise à jour de wordpress. En effet, lors de celle-ci, [...]]]></description>
			<content:encoded><![CDATA[<p>En écrivant l&#8217;article précédent, je me suis rendu compte que l&#8217;éditeur wysiwyg de wordpress avait disparu. J&#8217;utilise toujours l&#8217;éditeur HTML, donc ce n&#8217;est pas franchement un problème, mais tout de même. Après une rapide recherche sur Google, j&#8217;ai compris que l&#8217;erreur provenait de la dernière mise à jour de wordpress. En effet, lors de celle-ci, <strong>il arrive que le fichier wp-tinymce.js.gz soit corrompu</strong>. Si la même chose vous arrive, pas de panique, il suffit donc de remplacer ce fichier par la bonne version avec votre logiciel FTP, et tout devrait rentrer dans l&#8217;ordre.</p>
]]></content:encoded>
			<wfw:commentRss>http://julienappert.com/wordpress-et-la-disparition-de-lediteur-wysiwyg.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Police personnalisée : de cufon à font-face</title>
		<link>http://julienappert.com/police-personnalisee-de-cufon-a-font-face.html</link>
		<comments>http://julienappert.com/police-personnalisee-de-cufon-a-font-face.html#comments</comments>
		<pubDate>Wed, 16 Mar 2011 17:58:23 +0000</pubDate>
		<dc:creator>Julien Appert</dc:creator>
				<category><![CDATA[Trucs et astuces]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[intégrateur]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[navigateur]]></category>
		<category><![CDATA[police]]></category>

		<guid isPermaLink="false">http://julienappert.com/?p=407</guid>
		<description><![CDATA[Jusqu&#8217;ici, pour afficher une police personnalisée sur un site web, j&#8217;utilisais le service Cufon. Très pratique, il suffit de charger votre police dans leur formulaire et vous obtenez en retour un fichier javascript que vous pouvez ensuite utiliser sur votre site. Mais ce matin, en installant Internet Explorer 9, j&#8217;ai eu une mauvaise surprise&#8230; En [...]]]></description>
			<content:encoded><![CDATA[<p>Jusqu&#8217;ici, pour afficher une police personnalisée sur un site web, j&#8217;utilisais le service <a href="http://cufon.shoqolate.com/generate/">Cufon</a>. Très pratique, il suffit de charger votre police dans leur formulaire et vous obtenez en retour un fichier javascript que vous pouvez ensuite utiliser sur votre site. Mais ce matin, en installant Internet Explorer 9, j&#8217;ai eu une mauvaise surprise&#8230; En effet, <strong>la version de cufon que j&#8217;utilisais pour le site que vous avez sous les yeux n&#8217;était tout simplement pas compatible avec cette nouvelle version d&#8217;IE</strong>. En lieu et place de mes textes, j&#8217;obtenais&#8230; rien, rien du tout. Plus rien ne s&#8217;affichait. Problématique n&#8217;est-ce pas ? Alors certes, la dernière version de Cufon est IE9-compatible, et ce serait rapide de la mettre à jour. Mais dans ma tête ont défilé toutes les intégrations pour lesquelles j&#8217;avais utilisé ce service, et qu&#8217;il faudra également mettre à jour.</p>
<p>Et là je me suis dit stop ! Passons à une méthode plus pérenne, passons à font-face.</p>
<h2>Rapide historique</h2>
<p>Par défaut, un navigateur va utiliser les polices d&#8217;écriture présentes sur l&#8217;ordinateur de l&#8217;internaute pour afficher le texte d&#8217;un site web. Ce qui explique que nous soyons assez limités en terme de diversité d&#8217;écriture, car <strong>les polices disponibles sur tous les ordinateurs ne sont qu&#8217;une poignée</strong>. Il y a encore quelques années, pour rompre la monotonie, nous utilisions des images. Le problème : des sites plus lourds à charger et des textes impossibles à analyser pour les moteurs de recherche. </p>
<p>Puis les scripts tels que Cufon sont apparus. Le principe : vous affichez du vrai texte sur votre site web, et une surcouche javascript passe par dessus pour transformer la police d&#8217;écriture. L&#8217;inconvénient : le javascript doit être activé sur le navigateur de l&#8217;internaute&#8230; et il faut régulièrement mettre à jour le script pour assurer sa compatibilité avec les nouvelles versions de navigateurs.</p>
<h2>Le tant attendu font-face</h2>
<p>Or, <strong>depuis quelques années, il existe une règle css censée nous changer la vie : font-face</strong>. Elle permet d&#8217;afficher une police d&#8217;écriture personnalisée que vous aurez préalablement chargée sur votre site web. Par conséquent, au lieu d&#8217;aller chercher une police sur l&#8217;ordinateur de l&#8217;internaute (sans assurance de la trouver), le navigateur va simplement chercher la police sur votre site. Mais cette règle css n&#8217;a été implémentée qu&#8217;assez récemment sur les navigateurs modernes (tandis qu&#8217;Internet Explorer le gère depuis sa version 4.0).</p>
<p>Font-face est disponible depuis :</p>
<ul>
<li>Firefox 3.5</li>
<li>Opera 10</li>
<li>Safari 3.1</li>
<li>Chrome 3.0</li>
<li>Internet Explorer 4</li>
</ul>
<h2>Comment utiliser font-face</h2>
<p>A présent que font-face est largement disponible, il est donc possible de l&#8217;utiliser ! Comment ? Voici les 3 lignes de code css indispensables : </p>
<pre>
@font-face {
    font-family: 'Police';
    src: url('police.eot'); // IE
	src:local("Police"),url('police.ttf') format('truetype');
}
</pre>
<p>Vous aurez remarqué qu&#8217;IE nécessite un format de fichier particulier. Les autres navigateurs feront leur affaire avec le format truetype, mais certains vont préférer d&#8217;autres formats de police que vous pouvez également fournir de la manière suivante :</p>
<pre>
url('police.woff') format('woff'),
url('police.svg') format('svg');
</pre>
<p>Ensuite pour faire appel à cette police, utilisez la méthode traditionnelle :</p>
<pre>
h1{ font-family:"Police", Arial, sans-serif;}
</pre>
<p>La question est : <strong>où trouver ces formats de fichiers ?</strong> Vous pouvez par exemple acheter la police sur le site <a href="http://new.myfonts.com/">MyFonts</a>, où vous trouverez ces différents formats dans le zip téléchargeable. Mais si vous avez en votre possession un fichier ttf ou oft, faites un tour sur le site <a href="http://www.fontsquirrel.com/fontface/generator">Fontsquirrel</a>, qui met à votre disposition un &laquo;&nbsp;@font-face generator&nbsp;&raquo;, lequel vous fournira les versions converties de votre police.</p>
<p>Je vous conseille également d&#8217;aller lire <a href="http://www.slideshare.net/yvg/css-fontface-des-polices-personnalises">la présentation d&#8217;Yves Van Goethem</a>, qui vous apportera quelques informations complémentaires, notamment en terme d&#8217;optimisation.</p>
]]></content:encoded>
			<wfw:commentRss>http://julienappert.com/police-personnalisee-de-cufon-a-font-face.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mise à jour automatique de WordPress chez 1&amp;1</title>
		<link>http://julienappert.com/mise-a-jour-automatique-de-wordpress-chez-11-2.html</link>
		<comments>http://julienappert.com/mise-a-jour-automatique-de-wordpress-chez-11-2.html#comments</comments>
		<pubDate>Thu, 30 Dec 2010 10:42:15 +0000</pubDate>
		<dc:creator>Julien Appert</dc:creator>
				<category><![CDATA[Trucs et astuces]]></category>
		<category><![CDATA[1&1]]></category>
		<category><![CDATA[fatal error]]></category>
		<category><![CDATA[hébergement]]></category>
		<category><![CDATA[mémoire]]></category>
		<category><![CDATA[mise à jour]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://julienappert.com/?p=378</guid>
		<description><![CDATA[Si, comme moi, votre hébergement est un serveur mutualisé chez 1&#38;1, vous avez certainement un problème similaire au mien, à savoir pas assez de mémoire allouée pour effectuer les mises à jour du core. Par défaut, 1&#38;1 règle la mémoire à 32MB, alors que WordPress semble en requérir beaucoup plus&#8230; Résultat, vous vous retrouvez avec [...]]]></description>
			<content:encoded><![CDATA[<p>Si, comme moi, votre hébergement est un serveur mutualisé chez 1&amp;1, vous avez certainement un problème similaire au mien, à savoir pas assez de mémoire allouée pour effectuer les mises à jour du core. <strong>Par défaut, 1&amp;1 règle la mémoire à 32MB, alors que WordPress semble en requérir beaucoup plus&#8230;</strong> Résultat, vous vous retrouvez avec une erreur de type :</p>
<blockquote><p>Fatal error: Out of memory (allocated 31981568) (tried to allocate 3528484 bytes)</p></blockquote>
<p>Le service technique de 1&amp;1 a répondu à mon mail <del datetime="2010-12-30T10:01:42+00:00">d&#8217;insultes</del> d&#8217;appel à l&#8217;aide en m&#8217;expliquant comment augmenter la mémoire allouée jusqu&#8217;à la valeur ô combien vertigineuse de 40MB. Ouch. Comment dire. Ça ne sera pas suffisant.</p>
<p>Bon, qu&#8217;à cela ne tienne, je me suis remonté les manches et <strong>j&#8217;ai trouvé une solution bâtarde, c&#8217;est à dire à mi-chemin entre la mise à jour manuelle et la mise à jour automatique</strong>. Pourquoi ne pas faire simplement une mise à jour manuelle, allez-vous me demander ? Simplement parce que celle-ci prend trop de temps et est fortement génératrice de stress (même quand on sait comment s&#8217;y prendre). Bref, ma solution est la suivante :</p>
<ol>
<li><strong>Télécharger </strong>le fichier zip de la dernière version de WordPress</li>
<li>L&#8217;<strong>uploader </strong>via FTP dans un dossier de WordPress (j&#8217;ai choisi <code>wp-content</code>, mais ça peut être n&#8217;importe où)</li>
<li><strong>Modifier </strong>le fichier <code>wp-admin/includes/class-wp-upgrader.php</code>  :</li>
</ol>
<p>Rendez-vous à la ligne 878 (<code>class Core_Upgrader</code>, <code>function upgrade</code>), à savoir au niveau du code suivant :</p>
<pre class="brush: php; title: ; notranslate">$download = $this-&gt;download_package( $current-&gt;package );</pre>
<p>Et remplacez le par ceci :</p>
<pre class="brush: php; title: ; notranslate">
if($current-&gt;package == 'http://fr.wordpress.org/wordpress-3.0.4-fr_FR.zip')
 $download = '/chemin/vers/le/fichier/wordpress-3.0.4-fr_FR.zip';
 else
 $download = $this-&gt;download_package( $current-&gt;package );
</pre>
<p>Théoriquement, on devrait pouvoir se contenter de la ligne 2, mais je préfère prendre mes précautions.</p>
<p>L&#8217;exemple est évidemment à adapter avec la version de WordPress idoine. Si vous ne connaissez pas le chemin exact de votre site, c&#8217;est simple, vous l&#8217;avez à la fin de la &laquo;&nbsp;Fatal error&nbsp;&raquo; mentionnée plus haut. Après cela, lancez à nouveau la mise à jour automatique. Miracle, ça passe tout seul !</p>
<p>Le fichier que vous venez de modifier sera évidemment remplacé par la mise à jour, donc ne vous étonnez pas, il vous faudra recommencer cette manipulation à chaque fois que vous voudrez mettre à jour le core (et accessoirement, revenir sur cet article pour copier/coller le code <img src='http://julienappert.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  )</p>
]]></content:encoded>
			<wfw:commentRss>http://julienappert.com/mise-a-jour-automatique-de-wordpress-chez-11-2.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Filtrer les plugins disponibles sur un WordPress Multisite</title>
		<link>http://julienappert.com/filtrer-les-plugins-disponibles-sur-un-wordpress-multisite.html</link>
		<comments>http://julienappert.com/filtrer-les-plugins-disponibles-sur-un-wordpress-multisite.html#comments</comments>
		<pubDate>Tue, 21 Sep 2010 21:42:07 +0000</pubDate>
		<dc:creator>Julien Appert</dc:creator>
				<category><![CDATA[Trucs et astuces]]></category>
		<category><![CDATA[multisite]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://julienappert.com/?p=370</guid>
		<description><![CDATA[Je suis de plus en plus souvent amené à développer sur du WordPress en mode multisite, c&#8217;est à dire avec une gestion de blogs multiples. En général, le schéma est le suivant : un site général d&#8217;un côté (couplé avec BuddyPress pour les aspects sociaux) et des blogs d&#8217;utilisateurs de l&#8217;autre côté. Immanquablement vient alors [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-372 shadow" title="exclude-plugins" src="http://julienappert.com/wordpress/wp-content/uploads/2010/09/exclude-plugins.jpg" alt="" width="600" height="306" /></p>
<p>Je suis de plus en plus souvent amené à développer sur du WordPress en mode multisite, c&#8217;est à dire avec une gestion de blogs multiples. En général, le schéma est le suivant : un site général d&#8217;un côté (couplé avec BuddyPress pour les aspects sociaux) et des blogs d&#8217;utilisateurs de l&#8217;autre côté.</p>
<p>Immanquablement vient alors la question des plugins. On peut être amené à en installer plusieurs pour le fonctionnement du site général, mais<strong> on ne veut pas forcément que les utilisateurs puissent avoir également accès à tous ces plugins sur leurs blogs&#8230;</strong></p>
<p>Par défaut, WordPress gère deux modes de gestion des plugins : <strong>l&#8217;activation simple et l&#8217;activation sur le réseau</strong>. Si vous activez un plugin sur le réseau, il sera alors installé d&#8217;office partout, sans possibilité pour les utilisateurs de le désactiver. Cela peut être utile, dans certains cas, mais c&#8217;est malheureusement le contraire de ce que l&#8217;on voudrait ici ! Quant à l&#8217;activation simple, elle permet à chaque utilisateur de choisir quel plugin il désire utiliser sur son blog. <strong>En résumé, si vous installez un plugin sur un WordPress multisite, tout le monde y aura accès, soit par obligation, soit par choix</strong>.</p>
<p>Par conséquent, pour filtrer les plugins disponibles sur les blogs d&#8217;utilisateurs sans avoir à se restreindre sur le site général, il faudra passer par l&#8217;installation&#8230; d&#8217;un plugin.</p>
<p><strong>Si vous travaillez sur une version moderne de WordPress</strong> (3.0 ou plus), vous pouvez utiliser le très bon <a href="http://wordpress.org/extend/plugins/exclude-plugins/">Exclude Plugins</a>, développé par un certain <a href="http://itx.web.id/">ITX</a>.</p>
<p><strong>Si vous devez faire avec un vieux wpmu</strong> (par exemple un 2.9), Exclude Plugins ne pourra rien pour vous, car sa compatibilité ne descend pas jusque là. Mais je ne vais pas vous laisser en plan comme ça. Avec WordPress, on trouve toujours une solution, vous pensez bien. Je vous suggère alors l&#8217;installation de <a href="http://wordpress.org/extend/plugins/plugin-commander/">Plugin Commander</a>, qui fonctionne à partir de WordPress 2.8. Oh il fonctionne aussi avec les versions plus récentes, mais après avoir testé les deux plugins, je dois vous avouer une nette préférence pour Exclude Plugins (mieux développé, mieux structuré, à mon avis).</p>
<p>Voilà pour l&#8217;astuce, c&#8217;est cadeau ! J&#8217;en profite pour m&#8217;excuser auprès de tous ceux qui ont commenté sur ce blog à propos de mes différents plugins. Je peine à trouver le temps de m&#8217;en occuper, et donc à vous répondre. J&#8217;espère trouver le temps bientôt. Oh, et sinon, j&#8217;ai cru comprendre que la prochaine version de WordPress inclurait une fonctionnalité inspirée de Link to Post&#8230; A vérifier !</p>
]]></content:encoded>
			<wfw:commentRss>http://julienappert.com/filtrer-les-plugins-disponibles-sur-un-wordpress-multisite.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Optimiser WordPress, encore, toujours&#8230;</title>
		<link>http://julienappert.com/optimiser-wordpress-encore-toujours.html</link>
		<comments>http://julienappert.com/optimiser-wordpress-encore-toujours.html#comments</comments>
		<pubDate>Thu, 11 Mar 2010 11:19:49 +0000</pubDate>
		<dc:creator>Julien Appert</dc:creator>
				<category><![CDATA[Trucs et astuces]]></category>
		<category><![CDATA[base de données]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[requête]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://julienappert.com/?p=341</guid>
		<description><![CDATA[J&#8217;ai déjà évoqué la question ici, il existe de nombreux moyens pour et, ainsi, gagner en performances. Aujourd&#8217;hui, je vais partager avec vous deux astuces, la première concernant votre base de données, et la seconde, moins essentielle, à propos de la sauvegarde des articles. Voir et analyser les requêtes effectuées Pour afficher une page, WordPress [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://julienappert.com/wordpress/wp-content/uploads/2010/03/wordpress-optimisation-bdd.jpg"><img class="aligncenter size-full wp-image-342 shadow" title="wordpress-optimisation-bdd" src="http://julienappert.com/wordpress/wp-content/uploads/2010/03/wordpress-optimisation-bdd.jpg" alt="" width="600" height="249" /></a></p>
<p>J&#8217;ai déjà évoqué la question ici, il existe de nombreux moyens pour <a href="http://julienappert.com/11-astuces-pour-optimiser-votre-wordpress.html" title="11 astuces pour optimiser votre WordPress">optimiser votre installation WordPress</a> et, ainsi, gagner en performances. Aujourd&#8217;hui, je vais partager avec vous deux astuces, la première concernant votre base de données, et la seconde, moins essentielle, à propos de la sauvegarde des articles.</p>
<h2>Voir et analyser les requêtes effectuées</h2>
<p>Pour afficher une page, WordPress doit effectuer un certain nombre de requêtes dans la base de données. Une partie de celles-ci est générée par WordPress lui-même, mais le thème utilisé va jouer un rôle important, c&#8217;est pourquoi<strong> il est recommandé de remplacer certains appels de fonction par des données en dur</strong>. Par exemple, remplacer <code>&lt;?php bloginfo('url'); ?&gt;</code> par <code>http://monsite.com</code>.</p>
<p>L&#8217;astuce que je vais vous donner vous permettra de voir précisément les requêtes effectuées pour chacune de vos pages. Ouvrez votre fichier <code>wp-config.php</code> et ajoutez-y le code suivant :</p>
<pre class="brush: php; title: ; notranslate">define('SAVEQUERIES', true);</pre>
<p>A partir de maintenant, toutes les requêtes seront sauvegardées dans une variable, ce qui aura une influence négative sur les performances. Aussi, activez cette ligne uniquement pour l&#8217;analyse, ne la gardez pas en permanence.</p>
<p>Maintenant, ouvrez le <code>footer.php</code> de votre thème et ajoutez les lignes suivantes avant la fermeture du <code>&lt;body&gt;</code> :</p>
<pre class="brush: php; title: ; notranslate">&lt;?php
if (current_user_can('administrator')){
 global $wpdb;
 echo &quot;&lt;pre&gt;&quot;;
 print_r($wpdb-&gt;queries);
 echo &quot;&lt;/pre&gt;&quot;;
}
?&gt;</pre>
<p>Une fois connecté en tant qu&#8217;administrateur, <strong>ce code affichera en bas de vos pages un tableau dont chacune des entrées détaillera : la requête exacte, le temps qu&#8217;elle a pris et l&#8217;arborescence des fonctions ayant provoqué cet appel</strong>. Testé ici-même, le code m&#8217;indique 28 requêtes pour la page d&#8217;accueil, et 42 pour un article (( <a rel="nofollow" href="http://fr.wikipedia.org/wiki/La_grande_question_sur_la_vie,_l'univers_et_le_reste">42&#8230; La réponse ultime à la grande question sur la vie, l&#8217;univers et le reste</a>)). Ce qui est probablement perfectible&#8230;</p>
<h2>Se passer des sauvegardes automatiques</h2>
<p>Nous avons vu dans mon précédent article sur l&#8217;optimisation qu&#8217;il était possible de désactiver les révisions (<a href="http://julienappert.com/11-astuces-pour-optimiser-votre-wordpress.html" title="11 astuces pour optimiser votre WordPress">point 6</a>). Mais WordPress continue à effectuer des sauvegardes automatiques de vos articles en cours de rédaction. C&#8217;est très pratique, sauf lorsque vous créez du contenu en masse. Par exemple, dernièrement, il m&#8217;a fallu créer une arborescence d&#8217;une vingtaine de pages. La mécanique est simple et rapide : ajout du titre, choix de la page parent, et hop, j&#8217;enregistre. Sauf que ce dernier point est ralenti à cause de la sauvegarde automatique : je dois attendre la fin de son exécution pour publier. Frustrant, à la longue.</p>
<p>Pour ne plus avoir à affronter ce problème, deux solutions :</p>
<p>1. <strong>Modifier l&#8217;intervalle de sauvegarde automatique</strong>. Toujours dans le <code>wp-config.php</code>, ajoutez le code suivant :</p>
<pre class="brush: php; title: ; notranslate">define( 'AUTOSAVE_INTERVAL', 60 );</pre>
<p>Avec de la chance, vous aurez le temps de créer votre page et de l&#8217;enregistrer avant qu&#8217;une sauvegarde auto soit lancée.</p>
<p>2. <strong>Désactiver totalement la sauvegarde automatique</strong>. Là, il va falloir créer un plugin tout simple. Créez un fichier dans votre dossier <code>plugins</code>, nommez le, par exemple, <code>disable-autosave.php</code>, et insérez le contenu suivant :</p>
<pre class="brush: php; title: ; notranslate">&lt;?php
 /*
 Plugin Name: Disable Autosave
 */
 function disable_autosave() {
 wp_deregister_script('autosave');
 }
 add_action( 'wp_print_scripts', 'disable_autosave' );
 ?&gt;</pre>
<p>Grâce à ce plugin, le fichier javascript qui gère la sauvegarde auto ne sera plus appelé : vous en êtes libéré !</p>
]]></content:encoded>
			<wfw:commentRss>http://julienappert.com/optimiser-wordpress-encore-toujours.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Redéfinir les listes HTML générées par WordPress</title>
		<link>http://julienappert.com/redefinir-les-listes-html-generees-par-wordpress.html</link>
		<comments>http://julienappert.com/redefinir-les-listes-html-generees-par-wordpress.html#comments</comments>
		<pubDate>Fri, 19 Feb 2010 12:26:21 +0000</pubDate>
		<dc:creator>Julien Appert</dc:creator>
				<category><![CDATA[Trucs et astuces]]></category>
		<category><![CDATA[développeur]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://julienappert.com/?p=329</guid>
		<description><![CDATA[WordPress dispose de fonctions très pratiques pour afficher le contenu. Pour afficher la liste des pages disponibles de manière hiérarchique, il suffit d&#8217;utiliser la fonction wp_list_pages(), qui va générer toute seule le code HTML nécessaire, avec les listes imbriquées. Seulement voilà, parfois, on a besoin de personnaliser un peu ce code HTML. Par exemple, moi, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="shadow aligncenter" title="wordpress-wp-list-pages" src="http://julienappert.com/wordpress/wp-content/uploads/2010/02/wordpress-wp-list-pages.jpg" alt="" width="600" height="266" /><br />
WordPress dispose de fonctions très pratiques pour afficher le contenu. Pour afficher la liste des pages disponibles de manière hiérarchique, il suffit d&#8217;utiliser la fonction <code>wp_list_pages()</code>, qui va générer toute seule le code HTML nécessaire, avec les listes imbriquées.</p>
<p>Seulement voilà, <strong>parfois, on a besoin de personnaliser un peu ce code HTML</strong>. Par exemple, moi, j&#8217;avais besoin d&#8217;ajouter une classe sur les liens, ce qui n&#8217;a pas été prévu par WordPress. Qu&#8217;à cela ne tienne, me direz-vous, il suffit de réécrire la fonction ! Pas si simple, car celle-ci utilise <strong>un système très efficace mais relativement compliqué appelé <code>Walker</code></strong> (que vous trouverez dans le fichier <code>wp-includes/classes.php</code>). Et croyez-moi, vous n&#8217;avez pas envie de réécrire tout ça !</p>
<p>Le léger hack suivant va permettre de nous en sortir facilement.</p>
<p>Tout d&#8217;abord, il faut repérer la classe qui génère le contenu HTML. Dans le cas de la fonction <code>wp_list_pages()</code>, il s&#8217;agit de la classe <code>Walker_Page</code> (qui se trouve aussi dans le fichier précédemment cité). Copiez la dans votre plugin ou dans le fichier <code>functions.php</code> de votre thème, en prenant soin d&#8217;en modifier le nom. Par exemple :</p>
<pre class="brush: php; title: ; notranslate">class Walker_Page_modified extends Walker { ... }</pre>
<p>Profitez en pour adapter le code HTML à vos besoins. Maintenant, voyons comment dire à WordPress d&#8217;utiliser votre classe personnalisée. Tout se passe dans les paramètres de la fonction <code>wp_list_pages()</code> :</p>
<pre class="brush: php; title: ; notranslate">wp_list_pages(  array( 'walker' =&gt; new Walker_Page_modified() )  );</pre>
<p>Et voilà, c&#8217;est aussi simple que ça ! Vous avez réussi à plier WordPress à vos besoins, et non le contraire.</p>
]]></content:encoded>
			<wfw:commentRss>http://julienappert.com/redefinir-les-listes-html-generees-par-wordpress.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Créer des éléments HTML avec jQuery 1.4</title>
		<link>http://julienappert.com/creer-des-elements-html-avec-jquery-1-4.html</link>
		<comments>http://julienappert.com/creer-des-elements-html-avec-jquery-1-4.html#comments</comments>
		<pubDate>Fri, 15 Jan 2010 14:37:49 +0000</pubDate>
		<dc:creator>Julien Appert</dc:creator>
				<category><![CDATA[Trucs et astuces]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://julienappert.com/?p=289</guid>
		<description><![CDATA[Si vous avez déjà essayé d&#8217;ajouter des éléments HTML avec javascript, vous le savez : c&#8217;est la croix et la bannière !  Pour faciliter cette action, la dernière version de jQuery (1.4) propose une nouvelle syntaxe appelée : Quick Element Construction. C&#8217;est d&#8217;une simplicité déconcertante : Je suis déjà fan. La liste des fonctionnalités ajoutées [...]]]></description>
			<content:encoded><![CDATA[<p>Si vous avez déjà essayé d&#8217;ajouter des éléments HTML avec javascript, vous le savez : c&#8217;est la croix et la bannière !  Pour faciliter cette action, la dernière version de jQuery (1.4) propose une nouvelle syntaxe appelée : <a href="http://api.jquery.com/jQuery/#jQuery2">Quick Element Construction</a>. C&#8217;est d&#8217;une simplicité déconcertante :</p>
<pre class="brush: jscript; title: ; notranslate">jQuery(&quot;&lt;div&gt;&quot;, {
 id: &quot;foo&quot;,
    css: {
        height: &quot;50px&quot;,
        width: &quot;50px&quot;,
        color: &quot;blue&quot;,
        backgroundColor: &quot;#ccc&quot;
    },
    click: function() {
       $(this).css(&quot;backgroundColor&quot;, &quot;red&quot;);
    }
}).appendTo(&quot;body&quot;);</pre>
<p>Je suis déjà fan. La liste des fonctionnalités ajoutées à jQuery 1.4 est disponible sur le site <a href="http://jquery14.com/day-01/jquery-14">jquery14.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://julienappert.com/creer-des-elements-html-avec-jquery-1-4.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

