Here With Me

Blog personnel et technique, Blog technique et personnel, Blog avant tout.

10 mars 2009
par Amaury
6 Commentaires

Mise à jour vers WordPress 2.7.1, Solutions pour la notification de mise à jour récalcitrante !

Lors de la publication de WP 2.7.1, j'ai mis à disposition l'archive comprenant les fichiers modifiés sur WordPress Francophone. Malheureusement, il manque un fichier dans ce pack... ou plutôt il manque une ligne dans le fichier "version.php" !

La ligne à ajouter est la suivante :

$wp_local_package = 'fr_FR';

Elle permet de préciser la langue utilisée pour les mises à jour. Une fois le fichier modifié, vous devrez voir la notification disparaitre lors de la prochaine vérification de version de WordPress !

Si vous ne souhaitez ou ne pouvez pas faire la modification, n'oubliez pas qu'il est possible de masquer les mises à jour, pour cela il faut se rendre sur la page "Outils - Mettre à jour".

2 mars 2009
par Amaury
50 Commentaires

Fixer un nombre d’articles différents selon la vue ou l’on se situe dans WordPress

Lorsqu'on travaille sur des thèmes assez complexes, disons orienté magazine, on a généralement besoin d'afficher un nombre d'articles différents selon la ou on se situe... 5 pour la recherche, 8 pour les archives, etc.

Pour y parvenir, il y a 2 possibilités, installer une extension ou créer une fonction dans le thème.

  • L'extension a l'avantage d'être configurable depuis la console d'administration, le défaut c'est qu'on charge un peu plus de choses dans WordPress... Et puis pourquoi mettre personnalisable quelque chose de statique dans la vie de tous les jours...
  • La deuxième méthode consiste à placer une fonction directement dans le fichier functions.php de votre thème. Cette fonction sera associée au filtre "pre_get_posts" de WordPress.

Fonction d'exemple:

add_filter( 'pre_get_posts', 'quantity_per_view' );
function quantity_per_view( $wp_query = '' ) {
	if ( is_search() ) { // recherche
		$wp_query->query_vars['posts_per_page'] = 9;
	} elseif ( is_category() ) { // Category
		$wp_query->query_vars['posts_per_page'] = 8;
	} elseif ( is_tag() ) { // Tag
		$wp_query->query_vars['posts_per_page'] = 8;
	} elseif ( is_author() ) { // Auteur
		$wp_query->query_vars['posts_per_page'] = 8;
	} elseif ( is_date() ) { // Archive
		$wp_query->query_vars['posts_per_page'] = 8;
	}
	return $wp_query;
}

Ici, on permet de spécifier une quantité différente pour la vue, les catégories, les tags, les auteurs et les archives... La valeur que vous fixerez écrasera l'option présente dans la page de réglages "Lecture" de WordPress.

Je conclurai en disant que cette méthodologie est l'unique bonne méthode pour spécifier le nombre d'articles par page. Utilise la fonction query_posts() est une aberration digne de tout bon webdesigner en herbe pour la simple et bonne raison que vous effectuerez le double de requête SQL...

Cela aura comme conséquence d'augmenter la charge serveur et le temps de génération des pages ;) Si les créateurs de thèmes magazine US (Mimbo et ses petits cousins) me lisent (ce qui est compliqué), prenez de la graine !

CodePress lors de l'édition d'un thème

28 février 2009
par Amaury
13 Commentaires

Qu’attendre de WordPress 2.8 ?

Après une très solide version 2.7 et 2.7.1, voila ce que nous prépare les développeurs pour WordPress 2.8 :

Un éditeur de code dans WordPress : CodePress

L’intégration de la librairie JavaScript « CodePress » permettant une amélioration notable l’éditeur en ligne des thèmes et des extensions de WordPress. Cette librairie permet de mieux visionner le contenu des thèmes et des extensions WordPress.

Elle apporte également des améliorations concernant les raccourcis claviers, ce que ne permet pas un champ textarea classique.

CodePress lors de l'édition d'un thème

CodePress lors de l'édition d'un thème

Simple Pie

Simple Pie est une librairie PHP bien connu des développeurs PHP. Elle permet d’agréger des flux RSS, RSS 2.0, Atom très facilement. Depuis très longtemps WordPress utilise la classe Magpie pour faire ce travail, mais le problème est que cet outil n’est plus mis à jour et que ses performances et ses fonctionnalités montrent leurs limites.

Dans WordPress 2.8, toutes la partie agrégation RSS (tableau de bord et Widget RSS) devrait être pris en charge par Simple Pie, qui lui a l’avantage de gérer la mise en cache en base de données, chose très pratique et de suivre un développement très actif.

Un générateur de classe HTML pour l’élément « body » de votre thème.

Cette fonctionnalité, à destination des intégrateurs et créateurs de thèmes, ajoute une fonction body_class() permettant de générer une classe pour l’élément BODY de votre thème. Ainsi, vous pourrez facilement personnaliser l’aspect CSS de votre thème selon l’emplacement où vous êtes.

Il utilisera différents critères, la vue (catégorie, tags, archives), le type (article, page), le statut de connexion (logged-in), etc. Par exemple, sur la page d’accueil du blog, vous obtiendrez :

<body class="home blog logged-in">

Les créateurs de thèmes complexes apprécieront !

La taxinomie de WordPress évolue

Et une nouveauté dédiée aux développeurs de plugins ! Afin de rendre l’API de taxinomie de WordPress encore plus souple, les développeurs de WordPress lui ont apporté des modifications afin de générer des pages d’édition (ajout, édition, suppression) plus facilement. Aujourd’hui la manipulation consistait à s’inspirer de la structure des tags ou des catégories…

Il devrait encore être plus facile de créer de nouvelle taxinomie dans WordPress !

Amélioration des performances (DB + JavaScript)

Plus WordPress évolue, plus il a tendance à grossir… Assez logique ! Pour améliorer la situation, les développeurs ont ajouté dans WordPress 2.5, la fonctionnalité Turbo. Cette fonctionnalité bien qu’efficace n’a pas satisfait tous les utilisateurs, et les développeurs bien conscients de la situation travaille sur une amélioration des performances dans WordPress 2.8.

Les librairies JavaScript

La fonction wp_enqueue_script() va recevoir un nouveau paramètre permettant de spécifier si le script doit être chargé dans l’entête ou dans le pied de la page. WordPress gérera par la même occasion la concaténation des scripts et CSS, la compression Gzip des JavaScripts et des CSS. Cela permettra ainsi de réduire la taille des JavaScripts et diminuera le nombre de connexions HTTP.

Pour plus d’informations sur ces ajouts, il y a 2 articles (en anglais) qui traitent de cette modification:

  • http://wpdevel.wordpress.com/2009/02/06/script-loader-updates/
  • http://lesterchan.net/wordpress/2009/01/26/loading-javascript-in-footer-in-wordpress-28/

Cela amène l’ajout de différentes constantes de configuration: (je ne traduis pas, ça me parait assez explicite !)

define(‘SCRIPT_DEBUG’, true); loads the develppment (non-minified) versions of all scripts
define(‘CONCATENATE_SCRIPTS’, false); disables both compression and cancatenating,
define(‘COMPRESS_SCRIPTS’, false); disables compression of scripts,
define(‘COMPRESS_CSS’, false); disables compression of CSS,
define(‘ENFORCE_GZIP’, true); forces gzip for compression (default is deflate).

La base de données

Ryan parle sur son blog d’une amélioration de la base de données, d’après les développements présents dans le trac, il n’y a encore rien en place à ce sujet !

Amélioration de la sécurité SQL

Depuis les premières versions de WordPress, les développeurs ont toujours préféré la fonction addslashes() de PHP pour sécuriser les requêtes SQL. Ce choix peut parait surprenant pour tout développeur PHP, en effet il existe depuis quelques années la fonction mysql_real_escape_string() qui est destinée à cet effet…

En fait, la fonction addslashes() ne pose aucun problème de compatibilité avec les hébergeurs, ce qui n’est pas toujours le cas avec la fonction mysql_real_escape_string(). De nos jours, les hébergeurs étant majoritairement passer à PHP5 et le problème ne se pose plus vraiment, ainsi la classe de connexion à la base de données WPDB de WordPress 2.8 choisira ainsi la meilleure fonction disponible pour sécuriser les données !

Correction d’un bug gênant avec la classe WP-Cron

Je détaille la chose dans l’article :Des problèmes avec WP Cron et la programmation des articles ?

Amélioration de la classe HTTP

La classe HTTP ajoutée dans WordPress 2.7 se voit greffer quelques nouveautés:

  • Le support des compressions Gzip et Deflate pour le transfert des données
  • La possibilité de créer un cookie de connexion via la classe HTTP
  • La possibilité de bloquer l’appel à certaines URL via une liste noire (pratique si vous êtes derrière un serveur proxy par exemple)
  • Meilleur support du SSL

Diverses choses

  • Nouvel importeur pour le service LiveJournal
  • Minification (Minified) de tous les JavaScripts utilisés par WordPress. (en plus de la compression Gzip et la concaténation)
  • Amélioration de l’API XML-RPC concernant les médias de WP

La version 2.8 est prévue pour le 9 mars 2009, mais personnellement je doute qu’il soit dans les temps !

Pour visionner les évolutions, visitez le site de démo de la version de développement de WordPress

28 février 2009
par Amaury
2 Commentaires

Toute la documentation de WordPress

Lors de la sortie de WP 2.7, on avait parlé de la publication d’une documentation officielle pour le coeur de WordPress, cette dernière est accessible pour la version de développement à l’adresse :

http://phpdoc.wordpress.org/trunk/

Pour les autres versions, une page du codex décortique les différentes docs disponibles :

http://phpdoc.wordpress.org/trunk/WordPress

À noter que contrairement à un phpXref classique, la documentation de WordPress contient également la doc de toutes les librairies (JS, PHP) utilisées dans le projet.

28 février 2009
par Amaury
4 Commentaires

Des problèmes avec WP Cron et la programmation des articles ?

J’ai eu l’occasion de parler avec divers professionnels qui ont des soucis avec cette fonctionnalité, je vous donne 2 liens (US) qui en parlent, peut être que vous rentrerez dans leur cas.

  • http://yoast.com/wp-cron-issues/
  • http://www.bloghighlight.com/wordpress-post-missed-schedule/

Et après une petite investigation, essayez éventuellement d’appliquer les modifications de ce changeset, il corrige des bugs liés à WP-Cron. (cela provient de la version de développement de WordPress)

26 janvier 2009
par Amaury
19 Commentaires

Cforms disparait du référentiel WordPress.org…

Étrange situation… L’auteur d’une des extensions les plus populaires de WordPress vient de retirer son extension Cforms du référentiel WordPress.org.
La raison à cela ? L’affaire du lien de crédits ne pouvant plus être supprimé sans la perte de la fonctionnalité Ajax de l’extension…

C’est étrange, car je discutais, il y a 2-3 semaines de cela, avec Henri de 2803, et je lui expliquais que je ne comprenais pas pourquoi Cforms n’était pas supprimé du référentiel des extensions après l’affaire des copyrights encodés dans les thèmes.
Car pour rappel, WordPress.org a fait un grand tri dans le référentiel des thèmes pour supprimer les thèmes soit disant GPL, mais interdisant la suppression de la ligne de crédits.

Il me semblait logique de faire la même chose du côté des extensions… Étrangement dans le référentiel des extensions, les développeurs paraissent plus soucieux de respecter la licence GPL (sauf Cforms), mais ça n’est clairement pas le même public et de ce fait pas la même mentalité ;)

Donc désormais pour mettre à jour Cforms, il faudra le faire manuellement ce qui est chiant et long… vu la taille de l’extension… y’a plu qu’à trouver ou créer une alternative plus légère ;)

2 janvier 2009
par Amaury
2 Commentaires

Comment tester la présence de la pagination sous WordPress

Pour un projet client, j'ai dû tester la présence ou non de la navigation de WordPress. Ici il ne s'agit pas de navigation entre les articles, mais celle présente dans les archives et les catégories.

Par défaut, WordPress propose la fonction is_paged(), mais elle ne correspond pas vraiment au besoin. En pratique, elle ne fait que tester si on l'est sur une page d'une vue.

Exemple sur l'adresse:

http://www.herewithme.fr/category/wordpress/page/2

La fonction is_paged() retournera la valeur true, car le numéro de page est précisé. Elle retournera false si la page est la numéro 1 !

Pour vérifier si une page précédente ou suivante existe, voilà une petite fonction à placer dans le fichier functions.php

function is_real_paged() {
global $paged, $wp_query;
if ( !$paged )
$paged = 1;
$nextpage = intval($paged) + 1;
if ( !is_single() && ( $paged > 1 || $nextpage <= $wp_query->max_num_pages ) ) {
return true;
}
return false;
}

Et voici un usage possible de cette fonction:

<?php if ( is_real_paged() ) : ?>
<div class="navigation" id="nav-bottom">
<?php previous_posts_link('&laquo; Articles plus anciens') ?> <span>|</span> <?php next_posts_link('Articles plus récents &raquo;') ?>
</div>
<?php endif; ?>

Attention au guillemet si vous copiez coller ces bouts de codes ;)

27 décembre 2008
par Amaury
23 Commentaires

Auto entrepreneur, beau bordel pour faire des sous…

Me renseignant pour mes propres besoins sur le statut auto entrepreneur, je suis tombé sur la page « Création Site Web » proposé sur un site très corporate.

Ce qu’il y a de dangereux avec Internet de nos jours, c’est la publi-information… Je suis moi-même tombé sur ce site, et j’ai cru un moment que c’était une ressource officielle de l’état.

Mais en fait pas du tout.

Ce site qui avec une apparence très pro, un peu vieillotte (compatible avec l’état) a en apparence comme objectif de servir de base de connaissances, mais en réalité il n’est la qu’à des fins de publicité pour un utilitaire de création de sites… (assez cher par ailleurs)

Mais ça n’est pas un cas isolé, on retrouve :

  • http://www.auto-entrepreneur.fr/
  • http://www.auto-entrepreneur-web.fr/
  • http://www.statut-auto-entrepreneur.info/ (pas de produit, mais beaucoup de publicité)

Je trouve ces méthodes de publicité regrettables, sachant que pas mal de pigeons vont tomber dans le piège vu comment Google les a bien référencés…

Pour rappel, les sites à consulter sont :

Et bien d’autres…