Démarrer avec WordPress

Introduction à WordPress

WordPress [WP] est un système de gestion de contenu open source permettant de créer des applications, des sites Web et des blogs. WP est écrit en PHP et utilise MySQL comme magasin de données pour le contenu et la configuration de l’utilisateur. Il possède un riche écosystème de [plugins] [1] et [thèmes] [2] et bénéficie d’une communauté open source dynamique, d’une bonne documentation et de faibles barrières à l’entrée. La documentation sur l’utilisabilité et les développeurs se trouve dans le [WP Codex] [3].

Une partie de WordPress qui le rend différent de la plupart des autres produits CMS est sa [programmation pilotée par les événements] [4]. Il s’agit d’une manière de programmation et de représentation logique différente de l’architecture MVC (Model View Controller) qui est utilisée par la plupart des systèmes CMS. WordPress utilise les concepts d’Actions et de Filtres. Ils forment une file d’événements qui permettent aux plugins et aux thèmes d’insérer, de modifier ou même de supprimer des parties de la page finale de l’application Web et/ou des parties. Un concept similaire est la compilation JIT ou Just-In-Time.

Alors qu’historiquement, WordPress était connu comme une plate-forme de blogs et qu’il ne perdrait peut-être jamais cette stigmatisation, l’objectif de l’équipe principale de WordPress a clairement changé. Avec [2016 State of the Word][5], par le fondateur [Matthew Mullenweg][6], nous pouvons voir un changement clair dans les objectifs, la vision et l’effort. En 2016, nous avons constaté des progrès incroyables lorsque le cœur de WordPress a adopté la majorité du très populaire [plugin API REST][7]. C’était clairement une intention de l’équipe principale dès le début lorsqu’elle a commencé un effort audacieux pour créer un panneau d’administration JavaScript CMS frontal, qui rompt avec la norme d’or que nous avons vue depuis tant d’années ; ils l’appelaient [Calpyso][8].

[1] : https://wordpress.org/plugins/ [2] : https://wordpress.org/themes/ [3] : https://codex.wordpress.org/ [4] : http://wordpress.stackexchange.com/questions/117387/wordpress-and-event-driven-programming-what-is-it-about [5] : https://ma.tt/2016/12/state-of-the-word-2016/ [6] : https://en.wikipedia.org/wiki/Matt_Mullenweg [7] : https://developer.wordpress.org/rest-api/ [8] : https://developer.wordpress.com/calypso/

Thèmes WordPress

Mappage d’URL sur des modèles spécifiques

Pour appréhender pleinement les thèmes WordPress, vous devez comprendre deux concepts principaux :

  1. Permaliens
  2. La hiérarchie des modèles

Un lien permanent est une URL permanente et immuable (ou un lien vers une ressource spécifique. Par exemple :

  • example.com/about-us/ (une page dans WP)
  • example.com/services/ (une liste de plusieurs éléments, également appelée “archive” dans le jargon WP)
  • example.com/services/we-can-do-that-for-you/ (un élément individuel)

Lorsqu’un utilisateur demande une URL, WordPress inverse le permalien pour déterminer quel modèle doit contrôler sa mise en page. WordPress recherche les différents fichiers modèles qui pourraient contrôler ce contenu particulier, et donne finalement la préférence au plus spécifique qu’il trouve. C’est ce qu’on appelle la hiérarchie des modèles.

Une fois que WP a trouvé le modèle de vue correspondant dans la hiérarchie, il utilise ce fichier pour traiter et rendre la page.

Par exemple: index.php (le modèle “fourre-tout” par défaut) sera remplacé par archive.php (le modèle par défaut pour le contenu basé sur une liste), qui sera à son tour remplacé par archive-services.php (un fichier modèle spécifiquement pour l’archive nommé “services”).

[Voici une excellente référence visuelle pour la hiérarchie des modèles][1]

Structure de répertoire de thème de base

Un thème simple ressemble à ceci :

    // Theme CSS
    style.css

    // Custom functionality for your theme
    functions.php

    // Partials to include in subsequent theme files
    header.php
    footer.php
    sidebar.php
    comments.php

    // "Archives", (listing views that contain multiple posts)
    archive.php
    author.php
    date.php
    taxonomy.php
    tag.php
    category.php

    // Individual content pages
    // Note that home and frontpage templates are not recommended
    // and they should be replaced by page templates
    singular.php
    single.php
    page.php
    front-page.php
    home.php

    // Misc. Utility Pages
    index.php (a catch-all if nothing else matches)
    search.php
    attachment.php
    image.php
    404.php

Exemple de “Célibataire” (modèle pour une publication individuelle)

<?php get_header(); ?>

<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
    <h1><?php the_title(); ?></h1>
    <?php the_content(); ?>
    <?php comments_template( '', true ); ?>
<?php endwhile; ?>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

Qu’est-ce qu’il se passe ici? Tout d’abord, il charge header.php (similaire à un PHP include ou require), configure The Loop, affiche the_title et the_content, puis inclut comments.php, sidebar.php et footer .php. La boucle fait le gros du travail, en configurant un objet “Post”, qui contient toutes les informations sur le contenu actuellement affiché.

Exemple d’une “Archive” (modèle pour une liste de plusieurs articles)

<?php get_header(); ?>

<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
    <a href="<?php the_permalink(); ?>"<?php the_title(); ?></a>
    <?php the_excerpt(); ?>
<?php endwhile; ?>

<?php
    next_posts_link( 'Older Entries', $the_query->max_num_pages );
    previous_posts_link( 'Newer Entries' );
?>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

Tout d’abord, il inclut header.php, configure The Loop et inclut sidebar.php et footer.php. Mais dans ce cas, il y a plusieurs messages dans la boucle, donc à la place, un extrait est affiché avec un lien vers le message individuel. next_posts_link et previous_posts_link sont également inclus afin que l’archive puisse paginer les résultats.

Publications, pages, types de publication personnalisés et champs personnalisés

Prêt à l’emploi, WordPress prend en charge deux types de contenu : Posts et Pages. Les publications sont généralement utilisées pour le contenu non hiérarchique, comme les publications de blog. Les pages sont utilisées pour le contenu statique et autonome comme une page À propos de nous ou la page Services d’une entreprise avec des sous-pages imbriquées en dessous.

À partir de la version 3.0, les développeurs peuvent définir leurs propres types de publication personnalisés pour étendre les fonctionnalités de WordPress au-delà des bases. En plus des types de publication personnalisés, vous pouvez également créer vos propres champs personnalisés à joindre à vos publications/pages/types de publication personnalisés, ce qui vous permet de fournir un moyen structuré d’ajouter et d’accéder aux métadonnées dans vos modèles. Voir : [Champs personnalisés avancés][2].

[1] : https://wphierarchy.com/ [2] : https://www.advancedcustomfields.com/