Mots-clé : plugin

WordPress et JavaScript : mettre du code en dur dans vos articles

Si jamais un jour, comme moi, vous essayez de mettre du code JavaScript directement à l’intérieur de votre article – ou de votre page – alors irez dans l’onglet à droite ainsi :

Wordpress edition d'un article - onglet texte.jpg

Et vous taperez sûrement quelques lignes basiques comme celles-ci :

<script>
alert('bonjour');
</script>

Cela ne fonctionnera pas !

J’ai posé la question ici, et la réponse était : le code généré dans la page n’est pas correct, il faut le corriger… ce qui est vrai ! La seule solution que j’aie trouvé : écrire un fichier JavaScript externe, et l’embarquer dans la page. Malheureusement, j’ai codé la chose en dur, et je cherche actuellement parmi ces possibilités :

  • Soit pouvoir écrire du code qui ne sera pas retravaillé dans les articles / et / ou / pages ;
  • Soit pouvoir inclure des fichiers uniquement en fonction des pages.

Ce que je n’ai pas fait. Mais ma solution fonctionne, même si elle n’est pas la meilleure.

Solution 1

Je suis allé dans mon thème, et j’ai fait un include « générique » dans et j’y ai rajouté l’inclusion de mon script :

wp_enqueue_script( 'olivierpons', get_template_directory_uri() . '/js/op.js' );

C’était ici :
Wordpress description de l'inclusion de javascript dans un theme

Et là, j’ai pu écrire mon script, entièrement en JavaScript, qui n’est pas modifié par WordPress.

Pour information, ce script crée un formulaire complet afin de générer une requête SQL pour créer une base de données SQL avec un utilisateur et un mot de passe afin de copier coller le code pour créer la totale. Cela est si souvent fait que ça m’a lassé un peu et j’ai écrit ce code.

Vous pouvez retrouver ce formulaire dans cet article et dans cette page.

Solution 2

Les shortcode. Vous écrivez une function Php qui renvoie une chaine qui ne sera pas modifiée. Donc cette chaine peut tout à fait être du code dans une balise Javascript : <script>alert('bonjour');</script>. Seul problème : elle doit être codée en dur.

J’ai essayé de le contourner pour rendre le code entièrement dynamique.
Essayez ce code dans le fichier functions.php de votre thème :

if (!function_exists( 'foobar_func' )):
function foobar_func( $atts, $content, $tag ){
  echo $atts['script'];
  return (isset($content) ? $content : '');
}
add_shortcode( 'foobar', 'foobar_func' );
endif;

Puis essayez d’appeler la fonction ainsi dans un article :

[f oobar script="<script>
  jQuery(document).ready(function() {
    var j=jQuery('<div />');
  });
</script>"]

Et vous verrez que malgré tout, les paramètres sont retravaillés par WordPress et malmenés !

Au final, deux solutions

  • Ecrire un fichier JS externe, et l’inclure soit de manière générique dans toutes les pages, soit de manière dynamique (à vous de le paramétrer) :
  • La seconde qui consiste à écrire un shortcode et que ce shortcode renvoie le code Javascript au complet, sachant que le gros inconvénient, c’est que le code que vous renverrez sera difficilement lisible : en effet, ce sera une chaine de caractères « simple » dans votre fichier Php, il n’y aura aucune coloration syntaxique.

Drupal : comment faire fonctionner la dernière version de CKEditor

Télécharger la dernière version ici : CKEditor Version 4.3.1 – 10 Dec 2013.

Ensuite cherchez dans le répertoire de Drupal, le fichier ckeditor.inc.
Éditez ce fichier et aux alentours de la ligne 77, dans la fonction
vous devriez trouver une ligne qui ressemble fortement à ceci :

while ($max_lines && $line = fgets($library)) {

(A la différence près qu’il ya a un paramètre supplémentaire à fgets();.
Remplacez le code existant par celui qui est ici.

Ensuite 3 à 4 lignes en dessous, il y a un filtre pour chercher la version de ckeditor. Ce filtre n’est plus valide parce qu’il filtrait sur des nombres, mais ils ont ajouté des lettres à la version de CKEditor. Il faut donc le modifier par ce qui suit :

if (preg_match('@version:\"(?:CKEditor )?([\d\.]+)(?:.+revision:\"([\da-z]+))?@', $line, $version)) {

Et tout cela pourrait presque fonctionner, mais il y a quelque chose de très déroutant : même si vous avez suivi tout cela pas à pas, l’éditeur n’affichera pas les « boutons », mais juste une petite ligne : c’est parce que par défaut, rien n’est coché, et donc aucun bouton n’est visible.

Éditez donc les options de l’éditeur et cochez les boutons que vous voulez voir apparaître dans l’éditeur. Personnellement, je coche tout.

Et voilà, vous aurez un éditeur qui s’intègrera parfaitement, de manière agréable, toutes les fois où vous voudrez ajouter du contenu.

AdBlock : petit guide sur le don

Avec le temps, je commence à acquérir une mentalité un peu moins latine, c’est à dire que, par définition, dans les pays latins, si on peut avoir quelque chose gratuitement, ça ne sert à rien de payer. Le volontariat n’existe pas dans les pays latin. Vous connaissez peut-être le proverbe « je ne fais pas ça pour la gloire », un proverbe typiquement de nos contrées. Bien évidemment, c’est une généralité, et j’espère vivement que vous ne vous sentez pas concerné.

Pourquoi ce billet ? Tout simplement parce que j’ai donné 10 dollars, soit 10 euros à un type qui a fait le plugin le plus géniallissime de tous les temps, j’ai nommé : AdBlock. Oui, il bloque toutes les pubs qui nous pourrissent la vie. Il les cache. Il a développé le plugin sur Chrome, puis sur Safari, après s’être inspiré d’Adblock Plus sur Firefox. Ce type a changé ma vie d’internaute acharné. 10 euros c’est rien comparé à ce qu’il a fait pour moi. J’arrive enfin à lire ZDnet sans avoir envie de casser mon écran ! Bon ok j’éxagère un peu (à peine).

Je traduis pour les impatients (et après suit le mail original) :

Salut Olivier !

J’ai écrit AdBlock dans l’espoir que je pourrais rendre la vie des gens un peu plus agréable. Ton don m’incite à penser que j’ai réussi 🙂
Merci, merci merci beaucoup tu es si sympa !

Ces derniers mois je suis particulièrement inquiet parce que j’ai quitté mon travail en espérant que tous les utilisateurs donneraient assez pour m’aider moi et ma famille à vivre, et m’aider à continuer le développement. Peu de gens ont donné, actuellement, ce qui rend ton don encore plus appréciable — ton don est largement au dessus ce que la plupart des utilisateurs donnent (zéro).

Dans mon cas, Katie et moi avons décidé que le travail fait est tellement important qu’il faut que je continue, que je puisse vivre uniquement des dons ou pas, jusqu’à ce que je n’aie plus aucune réserve. Ton don m’éloigne un petit peu plus d’une situation de fauché… au fait je t’ai dit merci ? Merci ! 😀

Bon blocage de pub,
– Michael

PS : Si c’est possible, pourrais tu aller à http://chromeadblock.com/donate/thanks/ et en parler ? J’ai essayé de mettre quelque chose en place pour que PayPal le montre automatiquement après que tu aies donné, mais ça n’a pas l’air de fonctionner correctement.
En tous les cas, cela m’aiderait ENORMEMENT 🙂

Ci suit son mail de réponse :

Hi Olivier!

I wrote AdBlock in the hope that I could make people’s lives better. Your
donation tells me that I did it 🙂 Thank you very, very much! You are so
great!

It’s been a little scary in the few months since I quit my job, hoping that my
users would donate enough that I could support my family and fund more AdBlock
development. Not many users donate yet, which makes your donation even more
appreciated — your donation is way above what most users give: zero.

In any case, Katie and I have decided that it’s important enough work that I
should keep doing it whether we can live off of donations or not, until we
start running out of savings. Your donation just tipped the scales a little
further away from going broke… did I say thank you yet? Thank you! 😀

Happy ad blocking,
– Michael

PS: If you don’t mind, would you go to http://chromeadblock.com/donate/thanks/ and help me spread the word? I tried setting it up so PayPal would show you
that automatically after you donated, but it doesn’t seem to work reliably.
Anyway, it would help me IMMENSELY 🙂