ESUP-Portail Université de Rouen

Atelier Développement - 17 Décembre 2018

WordPress

  • Vincent Bonamy
  • Université de Rouen Normandie

WordPress

Plan

  1. Origines et chiffres
  2. Communauté
  3. Pièges
  4. Boutique en ligne de l'URN
  5. Choix des plugins
  6. Le code et les hooks
  7. Mises à jour
  8. Conclusion

WordPress

Origines et chiffres

  • ... d'un point de vue technique à l'origine c'est Français, auteur : Michel Valdrighi
  • développement permettant de mettre en oeuvre un 'blog' librement
  • aujourd'hui (2018), application php/mysql en GPL qui est utilisée par 30% des sites web dans le monde, très (très) loin devant ses 'concurrents' (Joomla, Drupal).
Source wikipedia.

WordPress

logiquement 1 grosse communauté

30% des sites web !

WordPress

et donc plein de pièges à éviter

  • des mauvais conseils, des questions/réponses non pertinentes, des 'mauvais' usages
  • des plugins qui ne passeront pas l'hiver, qui poseront problèmes à la première màj, qui sont buggués, 'mal' écrits
  • des sites dont le code a été patché 'en dur' pour faire vite ou par méconnaissance,
  • ...
Tout ça alors que WordPress est évidemment un super outil si on l'utilise 'comme il faut' !

WordPress à l'Université de Rouen Normandie

Pour la réalisation de sa boutique en ligne

  • Objectifs : une boutique en ligne.
  • Drupal Commerce écarté car semblant trop complexe
  • prestashop non connu à l'époque
  • Connaissance limitée de wordpress :
    • Intuitif et facile à prendre en main via l'IHM
    • Simple
    • Mise à jour de sécurité automatique
    • Bon support de sécurité pour des versions anciennes
  • woocommerce :
    • 1 seul plugin permettant de transformer wordpress en 1 boutique en ligne fonctionnelle
    • -> 30% des sites de commerce en ligne !

WordPress à l'Université de Rouen Normandie

Choix des plugins (modules)

A choisir très méticuleusement

  • nombre d'étoiles, nbre d'utilisateurs, commentaires des utilisateurs
  • dates de dernières mises à jour
  • gratuits -> permet une installation / mise à jour rapidement (quitte à prendre une version payante finalement si besoin)
  • on se restreint en nbre de plugins au mieux ; exemple, le plugin cas suffit pour l'authentification et l'identification (pas besoin de plugin ldap supplémentaire)
-> mise en place de la boutique en 2016 == 11 plugins et un thème.

WordPress à l'Université de Rouen Normandie

quand il faut mettre les mains dans le cambouis

le site ainsi obtenu ne correspond pas à 100% à ce qui était attendu ... mais presque !

Il faut alors

  • arriver à convaincre et montrer qu'on peut faire sans et adapater donc le besoin :-)
  • modifier véritablement le comportement du site ... et donc de wordpress et des plugins utilisés !

WordPress

Le code !

Documentations, forums, livres ... en fait le plus simple / rapide / efficace / sûr est de lire / comprendre le code (de wordpress et des plugins).
  • Eclipse–php et xdebug pour tracer le code
  • En prêtant une attention particulière sur les possibilités et mises en oeuvre des Hook :
    • Filter
    • Action

WordPress

Modification de wordpress, plugins et thèmes

  • Ne pas modifier le code en dur !!!
    oui ça marche, mais à moyen/long terme, c'est une catastrophe
  • Les hooks doivent/peuvent suffir
    oui, 'faire bien' prend plus de temps à très court terme
  • Mise en place des hooks avec Code snippets
  • Au pire, mais à ne pas conseiller, ajout de scripts php 'surchargeants' les scripts initiaux dans un thème enfant ... mais ce sont ces modifications qui poseront de potentiels problèmes lors des mises à jour :-(

WordPress

Exemples de Hook

  • Filtre : bewpi_placeholders dans le code de woocommerce-pdf-invoices.
    		    
    		    ...
      $placeholders = apply_filters('bewpi_placeholders', array(
        '[payment_method]' => $this->order->payment_method_title,
        '[shipping_method]' => $this->order->get_shipping_method()
      ), $this->order->id);
    		    ...
    		    
    		  
  • Action : wp_cassify_after_cas_authentication dans le code de wp-cassify
    
    		    ...
      // Define custom plugin hook after cas authentication.
      // For example, for two factor authentication, you can plug another authentication plugin to fired custom action here.
        do_action( 'wp_cassify_after_cas_authentication', $cas_user_datas );
    		    ...
    		    
    		  

WordPress

Exemples de Hook

  • Filtre : Remplacement du placeholder '[wcso_shipping_option]' par le point de retrait choisi dans les factures pdf.
    		    
      add_filter( 'bewpi_placeholders' , 'ur_custom_bewpi_placeholders', 10, 2);
    
      function ur_custom_bewpi_placeholders( $placeholders, $orderId) {
      
        $placeholders['[wcso_shipping_option]'] = get_post_meta( $orderId, 'wcso_shipping_option', true );
      
        return $placeholders;
      
      }
    		  
  • Action : Supprime le rôle admin des utilisateurs : le plugin CAS utilisé ne sait qu'ajouter des rôles (et ne les supprime jamais)
    		    
      add_action( 'wp_cassify_after_cas_authentication' , 'ur_wp_cassify_after_cas_authentication', 10 , 1);
    
      function ur_wp_cassify_after_cas_authentication($cas_user_datas) {
        $wp_user = get_user_by( 'login', $cas_user_datas[ 'cas_user_id' ] );
        if ( $wp_user != false ) {
          $wp_user->remove_role( 'administrator' );
        }
      }
    		  

WordPress

Hook Dans wordpress

  • Nombre de filtres et actions important dans wordpress (et plugins utilisés par notre site de boutique en ligne ici) :
    
    		    fgrep -R do_action * | wc -l                                                                                                 
    		    -> 1920
    		    
    		    fgrep -R apply_filter * | wc -l
    		    -> 3947
    
    		  

WordPress

mises à jour ...

    • Moins il y a de plugins,
    • notamment de plugins 'exotiques',
    • moins il y a de modifications d'effectuées,
    • et plus il y a de chance que les mises à jour fonctionnent !
    • Les wordpress modifiés sans respecter le code, le fonctionnement des plugins (hook), construits sans réflexion technique, sont voués à poser problème à chaque tentative de mise à jour.
    • un wordpress ainsi construit, et donc non mis à jour, a des chances de survie très limitées !

Conclusion

WordPress

  • WordPress est un très bon outil.
  • Notamment grâce à ses possibilités de 'hook' qui permettent le développement de plugins et leurs adaptations
  • Le développement doit être fait en utilisant ces possibilités
  • ... ou alors, plutôt que de modifier le code en dur dans une logique de court terme, il vaudrait mieux envisager se passer d'une telle modification du code ...