Créer son thème Wordpress

Tutoriel par Montage203 · Discord

Ce tutoriel permet de créer son propre thème Wordpress.


Étape 1: Le minimum requis

Cette étape est obligatoire et permet d'avoir un premier résultat.

Création des fichiers

Il suffit de :
  • créer un nouveau dossier dans wp-contents/themes par exemple mon-theme
  • y créer un fichier index.php
    • Dans ce fichier écrire par exemple Coucou, je fonctionne !
  • y créer un fichier style.css
    • dans ce fichier copier le code suivant et modifier les informations
    • /* Theme Name: NOM DE VOTRE THEME
      URI: http://www.VOTRE-SITE.COM
      Description: DESCRIPTION DE VOTRE THEME.
      Version: 1.0
      Author: VOTRE NOM
      */
  • y créer un fichier screenshot.png (dimensions 1200×900) illustrant le thème.
      À noter que cette étape n'est pas obligatoire pour que le thème fonctionne.
  • aller dans le backend apparence > thèmes et y activer le nouveau thème
  • retourner sur l’URL publique du site et rafraichir la page
  • La page affichera: Coucou, je fonctionne !

  • Étape 2: Afficher des contenus dynamiques relatifs au site (nom, description, chemin vers le dossier du thème)

    Maintenant que nous avons affiché le contenu de notre page index.php en activant le thème, passons en revue les quelques tags WP les plus utiles pour commencer, je pense notamment au:

  • Titre du site
  • Description / slogan du site
  • chemin vers le répertoire du thème, afin de pouvoir lier notre feuille de style style.css à notre page index.php
      <?php bloginfo('stylesheet_directory'); ?> <!-- chemin vers le répertoire/thème du site -->
      <?php bloginfo('name'); ?> <!-- nom du site -->
      <?php bloginfo('description'); ?> <!-- description du site -->

  • Étape 3: Créer une boucle pour afficher tous les articles et leurs contenus

    Nous allons maintenant créer une boucle qui permet d’afficher tous les articles / posts. Par défaut ils seront affichés par ordre antéchronologique (les plus récent en premier)

    <!-- Commencer la boucle -->
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

    <!-- Afficher les contenus de la boucle -->
    <?php the_post_thumbnail(); ?> <!-- remplace la balise <img> ! alternativement, on peut remplacer l'attribut src de la balise <img> par --> <?php echo get_the_post_thumbnail_url(); ?>
    <?php the_title(); ?> <!-- titre du post -->
    <?php the_content(); ?> <!-- contenu du post -->
    <?php the_date(); ?> <!-- date du post -->
    <?php the_permalink(); ?> <!-- lien vers le détail du post -->
    <?php the_time(); ?> <!-- date de création du post -->
    <?php the_author(); ?> <!-- auteur du post -->
    <?php the_category();?> <!-- la/les catégorie(s) assignée(s) au post -->

    <!-- Terminer la boucle -->
    <?php endwhile; endif; ?>

    Étape 4: Créer une boucle en dehors de la page des articles.

    Cette boucle permet d’afficher tous les articles / posts en dehors de la page des articles.

    <!-- Commencer la boucle -->
    <?php $args = array( 'numberposts' => 6, 'order'=> 'DESC', 'orderby' => 'date' );
    $postslist = get_posts( $args );
    foreach ($postslist as $post) : setup_postdata($post);
    ?>


    <!-- Afficher les contenus de la boucle -->
    Voir étape 3

    <!-- Terminer la boucle -->
    <?php endforeach;wp_reset_query(); ?>
  • numberposts = le nombre de posts à afficher. (dans l'exemple il est sur 6)

  • Étape 5: Créer une boucle juste pour une catégorie

    Cette boucle permet d’afficher tous les articles / posts d'une seule catégorie.

    <!-- Commencer la boucle -->
    <?php $catquery = new WP_Query( 'cat=2' ); ?>
    <?php while($catquery->have_posts()) : $catquery->the_post(); ?>

    <!-- Afficher les contenus de la boucle -->
    Voir Étape 3

    <!-- Terminer la boucle -->
    <?php endwhile; ?>

    Étape 6: Filtrer les boucles

    On peut aussi filtrer les boucles pour n’afficher que ce qui nous intéresse.

    <!-- n'afficher que les contenus de type 'post' (dans une page p.ex. -->
    <?php query_posts('post_type=post') ?>

    <!-- n'afficher que le premier post. On n'affiche qu'un post -->
    <?php query_posts('posts_per_page=1'); ?>

    <!-- Afficher uniquement le 2e, 3e et 4e post. On skip le premier et on en affiche 3 au total-->
    <?php query_posts('offset=1&posts_per_page=3'); ?>

    <!-- afficher tout excepté le premier post. -->
    <?php query_posts('offset=1'); ?>

    <!-- afficher tout excepté les 4 premiers posts. -->
    <?php query_posts('offset=4'); ?>

    Étape 7: Activer la possibilité d’ajouter une image mise en avant

    Dans functions.php, ajouter le code suivant

    //activer image mise en avant
    add_theme_support( 'post-thumbnails' );

    Étape 8: Afficher le menu

    Vous verrez que par défaut il ne vous est pas possible d’ajouter un menu. Il faut le spécifier à WordPress. Dans le fichier functions.php, ajouter le code suivant

    // ajouter une zone de menu
    register_nav_menu( 'primary', __( 'Navigation Menu' ) );

    Ensuite dans votre thème, vous pouvez appeler votre menu de cette façon

    <?php wp_nav_menu(); ?>

    Étape 9: Personaliser le lien Lire la suite…

    Dans functions.php, ajouter le code suivant

    //personaliser "lire la suite"

    function modify_read_more_link() {
    return '<a class="more-link" href="' . get_permalink() . '">lire la suite...</a>'; }

    add_filter( 'the_content_more_link', 'modify_read_more_link' );

    Étape 10: Ajouter une zone de widgets

    Dans functions.php, ajouter le code suivant

    // Enregistrer une zone appelée 'Ma zone de widgets'
    function add_widget_Support() {
    register_sidebar( array(
    'name' => 'Ma zone de widgets',
    'id' => 'zone-widgets',
    'before_widget' => '<div>',
    'after_widget' => '</div>',
    'before_title' => '<h2>',
    'after_title' => '</h2>',
    ) );
    }
    // Hook the widget initiation and run our function
    add_action( 'widgets_init', 'add_Widget_Support' );

    Ensuite dans votre thème, vous pouvez appeler votre widget de cette façon

    <?php dynamic_sidebar( 'zone-widgets' ); ?>

    Étape 11: Ajouter des classes sur le body

    <body <?php body_class(); ?>>

    Étape 12: Ajouter wp_header() et wp_footer()

    Pour terminer, il faut encore ajouter une fonction qui permettent à WordPress d'aller chercher la page header.php et l'injecté dans la page
    Avec cette méthode, vous pouvez avoir qu'un seul fichier qui comporte le menu. Et donc, si vous y faites une modificationd dessus, la modification se fera sur toutes vos pages.

    Pour appeler header.php, ajouter le code suivant

    <?php wp_header(); ?>

    Pour appeler footer.php, ajouter le code suivant

    <?php wp_footer(); ?>

    Autres tutoriels