Mon antisèche WordPress

Soyez conscients qu'il ne s'agit pas d'une liste exhaustive. Cliquez sur la flèche de gauche pour replier le contenu.

L'antisèche qui suit concerne une utilisation professionnelle de WordPress pour des clients, pas le volet 'plateforme de publication pour tous'.

Permalien pour la section Les choses à ne pas faire Les choses à ne pas faire

Permalien pour la section Les choses plus recommandées Les choses plus recommandées

Permalien pour la section Types de contenus et taxinomies Types de contenus et taxinomies

Types de contenu natifs
Posts
Pages
Attachments
Revisions
Navigation Menus
Custom CSS (additional CSS in the customizer)
Changesets (revisions in the customizer)
Taxinomies natives
categories
tags
Articles vs. pages Les pages sont hiérarchiques et non-chronologiques. Les articles sont non-hiérarchiques et chronologiques.
Ajouter des types de contenu et des taxinomies Suivez le guide ou utilisez Custom Post Type UI. Une voie plus "propre" peut être WP-CLI.

Permalien pour la section La base de données La base de données

WordPress utilise principalement MySQL en tant que système de base de données (on peut utiliser mariadb).

Liste des tables d'une installation par défaut
wp_commentmeta
wp_comments
wp_links
wp_options
wp_postmeta
wp_posts
wp_terms
wp_term_relationships
wp_term_taxonomy
wp_usermeta
wp_users
Utilisez WP-CLI pour les opérations manuelles Vous pouvez lire la doc de WP-CLI.
Accéder à la base depuis le code Vous pouvez utiliser la classe native Wpdb ou WP-CLI.

Permalien pour la section Plugins Plugins

Créer une extension Il suffit d'un seul fichier php (wp-content/plugins/) avec une entête particulière pour commencer :
<?php
/**
* Plugin Name: VOTRE NOM DE PLUGIN
*/
Vous pouvez néanmoins l'ajouter dans un dossier spécifique de votre chois dans le répertoire wp-content/plugins/ (bonne pratique).
Extensions automatiques Chemin par défaut: wp-content/mu-plugins. WordPress charge ces extensions particulières avant les extensions classiques.
Extensions Drop-Ins Chemin: wp-content. Lire l'article wpengineer (en)

Permalien pour la section Thèmes Thèmes

Fichiers fréquents
style.css // feuille de style principale, requis
index.php // fichier principal, requis
single.php // vue single
archive.php // vue archive (articles)
searchform.php
search.php // résultats de recherche
404.php
comments.php
footer.php
header.php
bottom.php
page.php // pages
et bien d'autres
Fonctions natives pour faire des inclusions
get_header();
wp_nav_menu();
get_searchform();
get_bottom();
get_footer();
get_template_part();
Et bien d'autres.
Récupérer des données depuis la base
the_content();
the_excerpt();
the_title();
the_permalink();
the_ID();
Et bien d'autres.
Boucles de posts
<?php if ( have_posts() ) : ?>
    <?php while ( have_posts() ) : the_post(); ?>
        // code
    <?php endwhile; ?>
<?php endif; ?>

Permalien pour la section Hooks Hooks

Les hooks permettent de modifier des comportements, restreindre certaines zones, et filtrer des données à la volée sans avoir à modifier les fichiers coeur de WordPress.

Vous pouvez utiliser des hooks natifs et ajouter vos propres hooks.

do_action() / add_action() Les actions sont commes des évènements JavaScript. Vous pouvez lancer du code pour des écrans en particulier ou à un moment précis du chargement global;
do_action( 'example_action', $arg1, $arg2 );
function example_callback( $arg1, $arg2 ) {
    // (maybe) do something with the args.
}
add_action( 'example_action', 'example_callback', 10, 2 );
apply_filters() / add_filter() Les filtres permettent de modifier des données à la volée, par exemple, avant d'insérer des données dans la base ou juste avant l'affichage en front.
$value = apply_filters( 'example_filter', 'filter me', $arg1, $arg2 );
function example_callback( $string, $arg1, $arg2 ) {
    // (maybe) modify $string.
    return $string;
}
add_filter( 'example_filter', 'example_callback', 10, 3 );
actions vs. filtres Techniquement, add_filter() et add_action() sont des alias, mais les filtres requièrent une valeur de retour contrairement aux actions. Attention à ne pas l'oublier quand vous filtrez sous peine de provoquer de grosses erreurs ou supprimer complètement des affichages.

Permalien pour la section Le customizer Le customizer

L’API customizer permet d’ajouter des options globales et de proposer aux utilisateur une prévisualisation en directe.

Liste des méthodes disponibles
add_action('customize_register', function( $wp_customize ) {
  $wp_customize->add_panel();
  $wp_customize->get_panel();
  $wp_customize->remove_panel();
 
  $wp_customize->add_section();
  $wp_customize->get_section();
  $wp_customize->remove_section();
 
  $wp_customize->add_setting();
  $wp_customize->get_setting();
  $wp_customize->remove_setting();
 
  $wp_customize->add_control();
  $wp_customize->get_control();
  $wp_customize->remove_control();
});
Seulement pour les administrateurs? Par défaut, seuls les utilisateurs ayant la capabilité `edit_theme_options` peuvent en profiter mais on peut l'étendre:
add_filter( 'map_meta_cap', function( $caps, $cap, $user_id ) {
    $required_cap = 'edit_posts';
    if ( 'customize' === $cap && user_can( $user_id, $required_cap ) ) {
        $caps = [ $required_cap ];
    }
    return $caps;
}, 10, 3 );

Permalien pour la section Rôles et permissions Rôles et permissions

WordPress fournit une gestion utilisateurs complète que l’on peut étendre.

6 rôles par défaut
Super Admin (multisite)
Administrator
Editor
Author
Contributor
Subscriber
Capabilités Tous les rôles partagent certaines capabilités communes mais chaque rôles a ses propres capabilités. Ces permissions déterminent si on peut ou pas accéder à certaines fonctionnalités, lancer certaines opérations, éditer certains contenus, etc.

Permalien pour la section REST API REST API

The WordPress REST API provides an interface for applications to interact with your WordPress site by sending and receiving data as JSON

Listes de endpoints Lire la documentation
Une API REST L'API JSON REST est une vraie API REST que l'on peut consommer avec toutes la gamme des languages (ex: PHP, Python, JavaScript, etc.)

Permalien pour la section Gutenberg Gutenberg

Utilisez WP-CLI Vous pouvez genérer des blocs

Permalien pour la section Architecture Architecture

Passer à Bedrock Bedrock est un framework sécurisé et bien architecturé pour WordPress propulsé par Composer.
Headless La tendance moderne: le back-office sous WordPress, le front-end découplé (ex: dans une app React). Certains écosystèmes comme Gatsbyjs encouragent cette approche.

Permalien pour la section Multisite Multisite

WordPress peut gérer des réseaux entiers de sites depuis une installation unique. On peut carrément créer sont propre générateur de blog à la wordpress.com:

Activer le multisite
define('WP_ALLOW_MULTISITE', true);
Sous-domaines vs. sous-dossiers La configuration par sous-domaines (e.g. https://*.mynetwork.com) requiert une wildcard. L'installation en sous-dossier (e.g. https://mynetwork.com/*) fonctionne partout.
Les utilisateurs "partagés" Chaque site du réseau enregistre les données utilisateurs dans les mêmes tables wp_users et wp_usermeta mais ceux-ci restent propres à chaque site.
Tables SQL Tables additionnelles du mode multisite :
  • wp_blogs: liste des sites du réseau
  • wp_blogs_versions: liste des versions de la base pour chaque site
  • wp_registration_log: enregistre l'utilisateur admin créé chaque fois qu'un nouveau site est créé
  • wp_signups: les utilisateurs qui se sont enregistrés depuis le formulaire d'inscription
  • wp_site: liste des URLs de chaque site
  • wp_sitemeta: metadonnées de chaque site
Domain mapping Le Domain mapping est une fonctionnalité native (depuis 4.5) qui permet de mapper de multiples domaines sur une même installation. Attention, ces domaines doivent pointer vers le même serveur DNS que l'installation pour que cela fonctionne.
Multi-réseaux et au-delà On peut créer des réseaux de réseaux, notamment grâce à multi-network installation. C'est très très spé comme besoin mais ça existe et ça marche très bien.