Les blocks: activer les options de dimension

Par défaut, Undercore ne gère pas les options de dimension des blocks.
Il faut les activer.

Dans le fichier functions.php ajoutez cette fonction:

/**
 * Activate dimensions block
 */

function slugdemontheme_block_padding_margin_theme_support( $editor_settings, $editor_context ) {
    if ( ! empty( $editor_context->post ) ) {
        $editor_settings["enableCustomSpacing"] = true;
	$editor_settings["__experimentalFeatures"]["spacing"]["margin"] = true;

    }
    return $editor_settings;
}
 
add_filter( 'block_editor_settings_all', 'slugdemontheme_block_padding_margin_theme_support', 10, 2 );

En savoir plus:

Les shortcodes

Un premier Shortcode qui affiche les titres des 5 derniers articles

A copier dans votre fichier functions.php


add_shortcode( 'query_shortcode', 'query_shortcode_function' );
function query_shortcode_function() {
    $buffer = '<h3>Shortcode: 5 derniers articles</h3>';
    $q = new WP_Query(array(
        'post_type' => 'post',
        'posts_per_page' => 5
    ));
    while ($q->have_posts()) {
        $q->the_post();
        $buffer = $buffer.get_the_title().'<br>';
    }
    wp_reset_postdata();
    return $buffer;
}

A insérer là où vous souhaiter le faire apparaître

[query_shortcode]

Une adaptation qui affiche les titres des 3 derniers articles ainsi que le résumé dans une grille d’article


add_shortcode( 'query_shortcode', 'query_shortcode_function' );
function query_shortcode_function() {
    $buffer = '<h3>Shortcode: 3 derniers articles</h3><div class="shortcode-grid">';
    $q = new WP_Query(array(
        'post_type' => 'post',
        'posts_per_page' => 3
    ));
    while ($q->have_posts()) {
        $q->the_post();
        $buffer = $buffer.'<article class="shortcode-grid-item">';
        $buffer = $buffer.'<h3>'.get_the_title().'</h3>';
        $buffer = $buffer.'<div class="shortcode-grid-item-excerpt">'.get_the_excerpt().'</div><!-- .shortcode-grid-item-excerpt -->';
        $buffer = $buffer.'</article>';
    }
    wp_reset_postdata();
    $buffer = $buffer.'</div><!-- .shortcode-grid -->';
    return $buffer;
}

Références:

https://wpshout.com/quick-guides/using-wp_query-first-time-shortcode-show-post-titles/


https://kinsta.com/fr/blog/shortcodes-wordpress/
https://codex.wordpress.org/Shortcode_API

Changer la largeur par défaut de l’éditeur Gutenberg

Tout est clair ici

et plus simplement: dans functions.php

function monchangement_gutenberg_admin_styles() {
    echo '
        <style>
            /* Main column width */
            .wp-block {
                max-width: 720px;
            }
 
            /* Width of "wide" blocks */
            .wp-block[data-align="wide"] {
                max-width: 1080px;
            }
 
            /* Width of "full-wide" blocks */
            .wp-block[data-align="full"] {
                max-width: none;
            }	
        </style>
    ';
}
add_action('admin_head', 'monchangement_gutenberg_admin_styles');

Ajouter des tailles images personnalisées

Dans le fichier functions.php


<?php
// First we'll add support for featured images
add_theme_support( 'post-thumbnails' );

// Then we'll add our 2 custom images
add_image_size( 'featured-large', 1600, 400, true );
add_image_size( 'blog-width', 800, 600 );

// And then we'll add the custom size that spans the width of the blog to the Gutenberg image dropdown
add_filter( 'image_size_names_choose', 'notretheme_custom_image_sizes' );

function notretheme_custom_image_sizes( $sizes ) {
    return array_merge( $sizes, array(
        'blog-width' => __( 'Blog Width' ),
    ) );
}


Tous les détails à retrouver ici

Les requêtes personnalisées

Sources: capitainewp.io

Exemple de requête que l’on peut copier et adapter en fonction de nos besoins:


<?php 
// 1. On définit les arguments pour définir ce que l'on souhaite récupérer
$args = array(
    'post_type' => 'post',
    'category_name' => 'films',
    'posts_per_page' => 3,
);

// 2. On exécute la WP Query
$my_query = new WP_Query( $args );

// 3. On lance la boucle !
if( $my_query->have_posts() ) : while( $my_query->have_posts() ) : $my_query->the_post();
    
    the_title();
    the_content();
    the_post_thumbnail();

endwhile;
endif;

// 4. On réinitialise à la requête principale (important)
wp_reset_postdata();

Ajouter une nouvelle zone de widget

Référence: wpformation

Étape 1 : Créer sa nouvelle zone de widget

Dans le fichier functions.php

function header_widgets_init() {
 
 register_sidebar( array(

 'name' => 'Ma nouvelle zone de widget',
 'id' => 'new-widget-area',
 'before_widget' => '<div class="nwa-widget">',
 'after_widget' => '</div>',
 'before_title' => '<h2 class="nwa-title">',
 'after_title' => '</h2>',
 ) );
}

add_action( 'widgets_init', 'header_widgets_init' );



Quelques explications :

  • ‘name’ = nom de la “widget area” qui apparaîtra dans votre administration WordPress
  • ‘id’ = identifiant unique de votre “widget area”
  • ‘before_widget’ = choisir une balise HTML à ouvrir avant votre widget (<div>, <li> etc…) et profitez-en pour y ajouter une classe qui pourra vous aider lors de la customisation CSS (étape 5)
  • ‘after_widget’ = fermer la balise (</div>, </li> etc…)
  • ‘before_title’ = choisir une balise pour le titre du widget (<h2>, <h3>, <h4> etc…) et, comme pour le ‘before_widget’,ajoutez une classe pour agir en CSS ultérieurement
  • ‘after_title’ = fermer la balise du titre (</h2>, </h3>, </h4> etc…)
  • ‘before_sidebar’ = choisir une balise HTML à ouvrir avant votre widget (<div>, etc…) et profitez-en pour y ajouter une classe qui pourra vous aider lors de la customisation CSS (étape 5)
  • ‘after_sidebar = fermer la balise (</div>, etc…)

Étape 2 : Faire apparaître la nouvelle widget area

 <!-- ajout de ma nouvelle widget area -->
 <?php if ( is_active_sidebar( 'new-widget-area' ) ) : ?>
 <div id="header-widget-area" class="nwa-header-widget widget-area" role="complementary">
 <?php dynamic_sidebar( 'new-widget-area' ); ?>
 </div>
 <?php endif; ?>
 <!-- fin nouvelle widget area -->


Résultat dans le dashboard de votre site:

Les blocks Large et Fullwidth.

Par défaut, Undercore ne gère pas les blocks Large et Fullwidth.
Il faut les activer.

Dans le fichier functions.php ajoutez cette fonction:

/**
 * Activate fullwidth block
 */

function slugdemontheme_setup_theme_supported_features() {

	// Format large
	add_theme_support( 'align-wide' );

}
add_action( 'after_setup_theme', 'slugdemontheme_setup_theme_supported_features' );

Et dans votre fichier css:

/* FULLWIDTH BLOCK */
@media screen and (min-width: 960px) {
    .alignfull {
          width: 100vw;
          margin-left: calc(50% - 50vw);
    }
    .alignwide {
          width: calc(100% + 240px);
          position: relative;
          left: -120px;
    }
}
   .entry-content .alignwide {
        margin-left  : -80px;
        margin-right : -80px;
    }
    .entry-content .alignfull {
        margin-left  : calc( -100vw / 2 + 100% / 2 );
        margin-right : calc( -100vw / 2 + 100% / 2 );
        max-width    : 100vw;
    }
    .alignfull img {
        width: 100vw;
    }

Custom fields

WordPress vous offre une interface pour gérer les contenus de votre site web.
Pour chaque page/article, vous avez à disposition:

  • un champ titre
  • un champ de contenu (gutenberg)
  • des catégories et tags
Interface WP classique

En fonction de vos types de contenus (portfolio, fiche produit, etc…) et/ou de votre mise en écran vous pourriez avoir besoin d’ajouter un ou plusieurs champs spécifiques. WordPress vous permet d’ajouter de nouveaux champs grâce au « custom fields » (Champs personnalisés):

Affichage des cutom fields
L’interface de gestion des custom fields apparaît sous le contenu

Un exemple

Imaginons:
Pour une webapp traitant d’architecture, nous souhaitons créer une fiche spécifique pour chaque bâtiment. Après le titre nous afficherons un cartouche contenant les informations techniques résumées tels que: la date de construction, le nom du bureau d’architecte, etc…

Création des champs personnalisés:

Affichage dans votre thème

<code><?php if (get_post_meta($post->ID, 'key', true)){echo get_post_meta($post->ID, 'key', true); ?>};</code>

ou

<p>Date de constrution: <?php echo get_post_meta($post->ID, 'Date de constrution', true); ?></p>
<p>Architecte: <?php echo get_post_meta($post->ID, 'Architecte', true); ?></p>

Les custom fields offrent des possibilités infinies.
A vous de les utiliser au mieux pour personnaliser WP en fonction de vos besoins (ou ceux de vos clients).

Vous désirez en savoir plus, lisez l’article suivant:

Référence: WordPress Custom Fields 101: Tips, Tricks, and Hacks

Intégrer une (ou des) Google fonts

Méthode 1: En utilisant un CDN

Rien de mieux qu’un exemple/explication

Dans votre thème, retrouver le fichier functions.php

Tout en bas du fichier, nous allons copier cette nouvelle fonction: en oubliant pas le commentaire:


/**
 * Enqueue google-font
 */
function leslugdemontheme_add_google_fonts() {
 
wp_enqueue_style( 'wpb-google-fonts', 'https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,700italic,400,700,300', false ); 
}
 
add_action( 'wp_enqueue_scripts', 'leslugdemontheme_add_google_fonts' );

https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,700italic,400,700,300

étant le code de font que vous retrouvez sur : https://fonts.google.com/ et qu’il faut bien entendu adapter.

Exemple avec plusieurs fontes:

Les fontes: Fjalla One and Noto Sans:

https://fonts.googleapis.com/css2?family=Fjalla+One&display=swap
https://fonts.googleapis.com/css2&family=Noto+Sans:wght@400;700&display=swap

ATTENTION
Avec certaines fonts, il faut dupliquer l’appel:


/**
 * Enqueue google-font
 */
function leslugdemontheme_add_google_fonts() {
 
wp_enqueue_style( 'wpb-google-fonts-fjalla', 'https://fonts.googleapis.com/css2?family=Fjalla+One&amp;display=swap', false );

wp_enqueue_style( 'wpb-google-fonts-notosans', 'https://fonts.googleapis.com/css2&amp;family=Noto+Sans:wght@400;700&amp;display=swap', false );
}
 
add_action( 'wp_enqueue_scripts', 'leslugdemontheme_add_google_fonts' );

Il ne me reste plus qu’à utiliser le code suivant dans ma css:

font-family: ‘Fjalla One’, sans-serif;
font-family: ‘Noto Sans’, sans-serif;

Méthode 2: Self hosted font

Référence:
https://www.aleksandrhovhannisyan.com/blog/downloading-and-optimizing-google-fonts/?utm_source=pocket_saves

1. Télécharger le fichier woff2 de la fonte choisie

Récupérer le lien de la fonte:


https://fonts.googleapis.com/css2?family=Outfit:wght@100;200;300;400;500&display=swap

https://fonts.gstatic.com/s/outfit/v11/QGYvz_MVcBeNP4NJuktqUYLkn8BJ.woff2
https://fonts.gstatic.com/s/outfit/v11/QGYvz_MVcBeNP4NJtEtqUYLknw.woff2

Copier le lien de chaque fonte dans votre navigateur et télécharger le(s) fichier(s) de fonte

2. Uploader le fichier woff2 de la fonte choisie

Dans un dossier « webfonts », dans votre thème

3. Définir le @fontface au sommet de votre css

/* latin */
@font-face {
  font-family: 'Outfit';
  src: url(webfonts/QGYvz_MVcBeNP4NJtEtqUYLknw.woff2) format('woff2');
 
}

/* latin */
@font-face {
  font-family: 'Outfit-bold';
  src: url(webfonts/QGYvz_MVcBeNP4NJtEtqUYLknw.woff2) format('woff2');
}

4. Appliquer la fonte en css dans votre css

body {
  font-family: 'Outfit';
  font-style: normal;
}

Charger une feuille de style personnalisée

Dans votre thème, retrouver le fichier functions.php

Editer-le, repérer la fonction: 


/**
* Enqueue scripts and styles.
*/
function test_scripts() {
wp_enqueue_style( 'test-style', get_stylesheet_uri() );

wp_enqueue_script( 'test-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '20151215', true );

wp_enqueue_script( 'test-skip-link-focus-fix', get_template_directory_uri() . '/js/skip-link-focus-fix.js', array(), '20151215', true );

if ( is_singular() comments_open() ; get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
}
add_action( 'wp_enqueue_scripts', 'test_scripts' );

 

wp_enqueue_style( 'ma-custom-feuilledestyles', get_template_directory_uri() . '/style-custom.css' );

 

Ajouter cette ligne de code APRES le chargement de la feuille de style du thème

 
/** 
* Enqueue scripts and styles. 
*/ 
function test_scripts() { wp_enqueue_style( 'test-style', get_stylesheet_uri() ); 

wp_enqueue_style( 'ma-custom-feuilledestyles', get_template_directory_uri() . '/style-custom.css' );

wp_enqueue_script( 'test-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '20151215', true ); 
wp_enqueue_script( 'test-skip-link-focus-fix', get_template_directory_uri() . '/js/skip-link-focus-fix.js', array(), '20151215', true ); 
if ( is_singular(); comments_open() get_option( 'thread_comments' ) ) { wp_enqueue_script( 'comment-reply' ); } } 
add_action( 'wp_enqueue_scripts', 'test_scripts' ); 
 

Uploader le fichier functions.php

Référence: wp_enqueue_style