Formation PUB020 : WordPress, 2023 Feuilles de style et scripts pour les shortcodes ou les extensions

30.1 Associer une feuille de style à un shortcode (wp_enqueue_style)


Peu importe la fonctionnalité mise en place par un shortcode, il est possible d'utiliser une feuille de style pour ajuster l'apparence du code HTML généré.

Quelle feuille de style utiliser ?

Lorsqu'un shortcode est défini dans une extension, ses styles ne doivent pas être définis dans le fichier style.css du thème. En effet, le shortcode pourrait continuer à être utilisé après avoir changé de thème. On créera donc une feuille de style propre à ce shortcode.

Même si le shortcode est défini dans un thème enfant (rappel : c'est correct de le faire puisque le thème enfant ne sera pas distribué), il est préférable d'utiliser une feuille de style qui lui est propre au cas où on choisirait par la suite de déplacer le code du shortcode dans une extension.

Les feuilles de style seront placées dans un dossier css placé sous le dossier du thème enfant ou de l'extension.

Ajout de la feuille de style

Bien qu'il existe plusieurs façons d'ajouter une feuille de style dans notre site, on privilégiera l'utilisation de la fonction wp_enqueue_style().

Pourquoi? Pour une foule de raisons techniques dont la description dépasse les buts de cette formation. Pour exposer les choses simplement, citons seulement le fait que cette fonction peut faire en sorte qu'une même feuille de style ne soit pas ajoutée deux fois.

La fonction wp_enqueue_style() peut accepter plusieurs paramètres dont certains sont optionnels. Nous travaillerons ici avec les deux premiers :

  • Une chaîne de caractères, appelée handle, qui identifie la feuille de style de façon unique. C'est par cette chaîne de caractères que la fonction reconnaîtra si la feuille de style est déjà ajoutée à la page ou non.

    Suggestion : utilisez un nom du thème enfant ou de l'extension suivi du mot shortcodes. N'utilisez aucun trait d'union ni barre de soulignement (ex : monprefixeshortcodes).

  • L'URL de la feuille de style. 
Fichier functions.php d'un thème enfant WordPress (ou son sous-fichier shortcodes.php)

wp_enqueue_style( 'monprefixeshortcodes', get_stylesheet_directory_uri() . '/css/shortcodes.css' );

ou, si le shortcode est défini dans une extension :

WordPress (PHP)

wp_enqueue_style( 'monprefixemonextension', plugins_url( 'css/shortcodes.css', __FILE__ ) );

Lorsque la fonction wp_enqueue_style() sera exécutée, une balise <link> sera ajoutée dans la zone <head> de la page Web. Dans le cas où on ajoute une feuille de style dans un thème, on aura la balise suivante :

HTML

<link rel='stylesheet' id='monprefixeshortcodes-css' href='https://mondomaine.com/wp-content/themes/monthemeenfant/css/shortcodes.css?ver=...' media='all' />

Placer wp_enqueue_style() dans le bon hook

Depuis WordPress 3.3, si vous utilisez wp_enqueue_style() directement dans votre fichier functions.php, tout fonctionnera correctement mais le message suivant sera ajouté dans votre fichier debug.log :

« PHP Notice: La fonction wp_enqueue_style a été appelée de façon <strong>incorrecte</strong>. Les scripts et les styles ne peuvent pas être enregistrés ou ajoutés avant le déclenchement des crochets <code>wp_enqueue_scripts</code>, <code>admin_enqueue_scripts</code> ou <code>login_enqueue_scripts</code>. »

Il faut donc utiliser le hook wp_enqueue_scripts() (remarquez le s à la fin) pour ajouter correctement les scripts et les feuilles de styles qui seront utilisés dans le site Web (front-end). wp_enqueue_scripts() sera utilisé autant pour les shortcodes que pour les extensions.

Fichier functions.php d'un thème enfant WordPress (ou son sous-fichier shortcodes.php)

/**
 * Charge les scripts et feuilles de style propres au thème.
 * @author Christiane Lagacé <christiane.lagace@hotmail.com>
 *
 * Utilisation : add_action('wp_enqueue_scripts', 'monprefixe_charger_css_js_web');
 */
function monprefixe_charger_css_js_web() {
    wp_enqueue_style( 'monprefixeshortcodes', get_stylesheet_directory_uri() . '/css/shortcodes.css' );
}
 
add_action('wp_enqueue_scripts', 'monprefixe_charger_css_js_web');

Remarquez le « _web » à la fin du nom de la fonction de rappel. Ce suffixe n'est pas obligatoire mais il permet de différencier le code utilisé côté site Web de celui utilisé côté tableau de bord.

Notez que si les scripts et les feuilles de style sont utilisés dans le tableau de bord, on utilisera plutôt wp_admin_enqueue_scripts().

Référence aux images dans la feuille de style

Puisque la feuille de style est placée dans un sous-dossier (le sous-dossier css), vous devrez ajuster en conséquence les URL dans les règles CSS.

Considérant que l'URL est toujours donné relativement à la feuille de style, vous devrez descendre d'un niveau avant de trouver le dossier medias.

CSS

background-image: url("../medias/commun/fond.png")

 

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre