wordpresslogo

WordPress, des filtres et des actions (2ème partie)

Cet article fait suite à un article écrit il y a quelques temps de celà (en fait, il y a longtemps déjà et vous m’en voyez désolé…): WordPress, des filtres et des actions (1ère partie).

Rappelez-vous, dans l’article précédent j’expliquais la différence entre un filtre et une action… Un filtre est une fonction qui va recevoir un paramètre en entrée, le transformer et renvoyer le résultat de la transformation. L’action, quant à elle, reçoit 0, 1 ou plusieurs paramètres en entrée et effectue une action; cette action ne renvoie pas de résultat, ce n’est pas nécessaire.

Je vais vous donner un exemple concret d’utilisation de filtres et actions, repris d’un de mes projets.
Lire la suite de l’article

wordpresslogo

WordPress 4.0 “Benny” disponible au téléchargement

La version 4.0 de WordPress est finalement disponible! Quoi de neuf dans cette version?

  • L’installateur de WordPress 4.0 inclue un sélecteur de langue pour l’installation! (plus de détails, en anglais)
    Après avoir sélectionné la langue d’installation, WordPress va automatiquement télécharger les fichiers de la langue sélectionnée.
    La constante WP_LANG est maintenant dépréciée et est remplacée par l’option WP_LANG.
  • Amélioration de l’interface de la bibliothèque des médias (vue en grille)
  • L’ajout de contenu intégré (“embeds” en anglais) a encore été amélioré:
    L’éditeur visuel affiche une prévisualisation  du lien en temps réel. Par exemple, vous insérez le lien d’une vidéo Youtube, l’éditeur va automatiquement le convertir en vidéo Youtube.
    Trois sites ont été ajoutés à la (longue) liste des sites supportés par WordPress: les vidéos du site CollegeHumor, les listes de lecture de Youtube ainsi que les conférences TED.
  • L’éditeur se redimensionne automatiquement en fonction du contenu et les options de formattage sont affichées en permanence
  • La section des plugins a subi un petit lifting (il était temps… finalement un design potable pour cette page).
    De plus, les développeurs peuvent associer un icône à leur plugin (plus de détails, en anglais)
  • L’API de la section “Apparence” > “Personnaliser” a également été mise à jour et offre plus de possibilités qu’auparavant
  • Mise à jour des librairies: TinyMCE 4.1.3, jQuery 1.11.1 etMediaElement 2.15
  • Le tri des requêtes (plus de détails, en anglais)
    En résumé, avant WordPress 4.0 on pouvait utiliser le paramètre orderby pour trier les résultats récupérés à l’aide de WPQuery. La syntaxe avant la version 4.0 était la suivante:

    $q = new WP_Query( array( 'orderby' => 'title author' ) );
    

    Problème: que se passe-t-il quand on veut que les résultats soient triés sur plusieurs colonnes, certaines d’entre elles en ASC et d’autres en DESC? Et bien cette syntaxe ne permettait pas grand chose… On était obligé de passer par des filtres sur les requêtes SQL.
    Avec Wordpress 4.0, on a finalement droit à un peu plus de flexibilité en tant que développeur, grâce à la syntaxe suivante:

    new WP_Query( array( 'orderby' => array( 'title' => 'DESC', 'menu_order' => 'ASC' ) ) );
    

    Le paramètre orderby accepte un tableau dont les clés sont les noms des colonnes sur lesquelles effectuer le tri et les valeurs sont le sens du tri (ASC ou DESC).

wordpresslogo

WordPress, des filtres et des actions (1ère partie)

Il est impossible d’écrire des plugins et/ou des thèmes pour WordPress sans passer par l’utilisation des filtres et des actions. En fait, WordPress utilise énormément les deux, et ne pas comprendre ce que c’est ni à quoi ça sert, et bien c’est mal… Et ce qui est encore plus mal, c’est de ne pas comprendre ce qui les différencie!
La nuance entre un filtre et une action est ténue, et c’est une question qui revient souvent chez les développeurs débutant avec WordPress: Quelle est la différence entre un filtre et une action?
Lire la suite de l’article

php-logo-svg_

PHP – Les différentes manières d’appeler la fonction callback d’usort

Connaissez-vous les différentes manières d’utiliser une fonction callback (ou fonction de rappel en bon français) en paramètre de la fonction usort?

Tout le monde connaît la méthode la plus simple qui consiste à donner en paramètre le nom d’une fonction globale, comme montré dans l’exemple suivant:

function maFonctionCallbackUsort( $a, $b ) {
  return strcmp( $a, $b );
}

usort( $monTableau, 'maFonctionCallbackUsort' );

Un bon petit bout de code qui fait ce qu’on lui demande: il compare deux éléments du tableau et renvoie un résultat indiquant lequel des deux éléments est plus grand que l’autre…

Le problème avec ce morceau de code, c’est qu’on pollue l’espace global de notre application avec une fonction qui ne sera utilisée que pour notre appel à la fonction usort.
Ce serait quand-même bien de pouvoir utiliser notre fonction usort dans une classe par exemple, avec une fonction callback privée qui ne serait pas accessible en dehors de la-dite classe (histoire d’éviter justement cette pollution de l’espace global).
Lire la suite de l’article

Javascript

Recharger le contenu d’un iframe via Javascript

Commençons par situer le contexte:
Un client me demande d’afficher une carte Google (google maps) dans un iframe (c’est le moyen le plus simple d’intégrer une carte google maps dans un site web). Sur la carte, un marqueur indique l’emplacement de l’adresse de son bureau.

Le site de mon client étant adaptif (mon dieu que ce terme est laid! Responsive design, si vous avez une meilleure traduction, je suis preneur), mon cher et bien aimé client aimerait que le marqueur soit toujours situé en plein milieu de la carte, même après qu’il ait modifé les dimensions de son navigateur, ou après qu’il ait alterné le mode paysage/portrait de sa tablette.
Lire la suite de l’article