Accueil

Référence développeur · WordPress

Websource Theme Config pour WordPress — référence développeur

Blocs, shortcodes, filtres, route REST, commandes WP-CLI, variables CSS et format des paquets de thème.

Version 1.0.0 · WordPress 6.4+, WooCommerce 8+ (facultatif) · Mis à jour le 09/10/2026

Guide utilisateur

Cette extension existe aussi pour : PrestaShop

Blocs et shortcodes

BlocShortcodeAttributsRendu
websource/copyright[websource_copyright]textAlign (left, center, right) pour le blocCopyright de la langue courante, jetons {year} et {shop_name} remplacés.
websource/shop-info[websource_shop_info]aucunLogo ou nom, description courte, réseaux sociaux. Rien si la carte est vide.

Les deux blocs sont rendus côté serveur (block.json dans blocks/, script d'éditeur assets/js/blocks.js sans étape de build).

Fonctions publiques

websource_theme_config(): array                 // tous les réglages
websource_theme_config_get(string $key, $default = null)
websource_theme_config_tokens(): array          // variables CSS, nom => valeur
websource_theme_config_copyright(): string      // HTML assaini
websource_theme_config_shop_info(): ?array      // logo, logo_light_url, logo_dark_url, bg_light, name, description, social

Filtres et actions

Fournis au thème

HookTypeRôle
websource_theme_tokensfiltreReçoit les variables du thème et y ajoute celles des réglages.
websource_theme_settingsfiltreAjoute tous les réglages, et les clés du thème Websource (header_desktop, header_mobile, mobile_nav, footer_style, footer_text).
websource_theme_copyrightfiltreRenvoie le HTML du copyright.
websource_theme_copyright_htmlfiltreIdem, pour un thème tiers : echo apply_filters('websource_theme_copyright_html', '');.
websource_theme_config_copyrightactionAffiche le copyright : do_action('websource_theme_config_copyright');.
websource_theme_footer_infofiltreRenvoie le tableau des informations de la boutique, ou null.
websource_theme_footer_aboutactionAffiche les réseaux sociaux dans la première colonne du pied de page du thème Websource.
websource_theme_ld_commercefiltreRenvoie ['shipping' => ?array, 'return_policy' => ?array].
websource_theme_product_variantsfiltreapply_filters('websource_theme_product_variants', '', $product_id) renvoie le HTML des pastilles.
websource_theme_product_variants_datafiltreRenvoie ['mode' => string, 'groups' => array].

Pour personnaliser l'extension

HookParamètresRôle
websource_theme_config_tokensarray $tokens, array $settingsAjouter ou modifier des variables CSS.
websource_theme_config_inline_cssstring $css, array $settingsCSS ajouté au bloc <style id="wstc-vars">.
websource_theme_config_compat_cssstring $cssRègles appliquées aux thèmes tiers (texte, liens, boutons, pastille « Promo »). Renvoyer '' pour les retirer.
websource_theme_config_emit_organizationbool $emitForcer ou couper les nœuds Organization et WebSite.
websource_theme_config_jsonldarray $nodes, array $settingsCompléter les nœuds, par exemple avec aggregateRating.
websource_theme_config_active_currenciesstring[] $codesDevises déclarées dans currenciesAccepted.
websource_theme_config_ecosystemarray $catalogListe des extensions de l'écosystème (dossier => nom).
websource_theme_config_saved (action)array $settingsAprès chaque enregistrement des réglages.

Exemple :

add_filter('websource_theme_config_tokens', function (array $tokens) {
    $tokens['--container-page'] = '72rem';
    return $tokens;
});

Paquets de thème

HookParamètresRôle
websource_theme_export (filtre)array $sections, array $contextAjouter une section : ['key', 'version', 'label', 'module', 'data']. $context['assets']->add($chemin) dépose un fichier et renvoie son jeton.
websource_theme_import (filtre)$report, string $key, array $section, array $contextImporter la section $key et renvoyer ['action', 'counts', 'messages']. $context : mode, dry_run, assets, languages, package_languages, options.
websource_theme_imported (action)array $package, array $reportsAprès un import réel.
add_filter('websource_theme_export', function (array $sections) {
    $sections[] = ['key' => 'myplugin', 'version' => 1, 'label' => 'My plugin', 'module' => 'my-plugin', 'data' => get_option('my_plugin', [])];
    return $sections;
});
add_filter('websource_theme_import', function ($report, $key, $section, $context) {
    if ($key !== 'myplugin') {
        return $report;
    }
    if (empty($context['dry_run'])) {
        update_option('my_plugin', $section['data']);
    }
    return ['action' => $context['mode'], 'counts' => ['update' => 1], 'messages' => []];
}, 10, 4);

Route REST

POST /wp-json/websource-theme-config/v1/palette

Aperçu ou enregistrement d'une palette. Réservée aux comptes ayant la capacité manage_options, avec le réglage « sélecteur de palettes » actif.

ParamètreRôle
_wpnonce (URL)Nonce REST de WordPress (wp_rest).
tokenNonce de l'action wsx_tc_palette.
actionvars (aperçu) ou save (enregistrement).
presetClé d'une palette : blue, forest, violet, coral, slate, raspberry, mint, amber.
primary, secondary, accentTrois couleurs #rrggbb, à la place de preset.

Requête :

curl -X POST 'https://exemple.fr/wp-json/websource-theme-config/v1/palette?_wpnonce=NONCE' \
  -b cookies.txt -F action=save -F token=JETON -F preset=violet

Réponse 200 :

{"ok": true, "saved": true, "vars": {"--color-brand-50": "#f3eefc", "--color-brand-600": "#6d28d9"}, "preset": "violet"}

Erreurs : 400{"ok":false,"error":"invalid"}, 403{"ok":false,"error":"forbidden"} (jeton refusé) ou erreur REST standard (non connecté), 404{"ok":false,"error":"disabled"}.

Flux RSS

/?feed=websource-products : derniers produits publiés (titre, lien, date, résumé, catégories, image), sans prix. &category=<slug> limite à une catégorie de produits. Réponse 404 si le flux est désactivé ou la catégorie inconnue.

Commandes WP-CLI

wp websource-theme demos
wp websource-theme export [--dir=<dossier>] [--name=<nom>] [--sections=theme,layout] [--with-contact]
wp websource-theme import <fichier> [--demo=<slug>] [--mode=replace|merge] [--sections=…] [--with-contact] [--dry-run]
wp websource-theme restore [<id>]

Variables CSS

Imprimées dans <style id="wstc-vars"> sur :root, mêmes noms que assets/src/tokens.css du thème.

VariablesContenu
--color-brand-50 … --color-brand-900, --color-brand, -fill, -on, -textCouleur principale : échelle, aplat, texte sur aplat, variante lisible comme texte.
--color-secondary-*, --color-accent-*Mêmes déclinaisons pour la couleur secondaire et l'accent.
--color-accent-wstAccent brut.
--color-ink, --color-line, --color-page, --color-surfaceTexte, bordures (transparent sans bordures), fond de page, fond des cartes.
--color-footer, -ink, -muted, -deep, -line, -hoverPied de page.
--radius-xl, --radius-2xl, --wst-card-shadowArrondis et ombre des cartes.
--font-sans, --font-headPolices du texte et des titres.
--wsx-bd-*Badges : fs, lh, fw, bw, py, px, gap, tt, radius, et <type>-bg, -fg, -bd. Émises seulement si elles diffèrent du défaut.
--wsx-hdr-pt, --wsx-hdr-pb, --wsx-hdr-minMarges et hauteur de l'en-tête.
--wsx-thumb-pad, --wsx-thumb-img-rCadre des miniatures produit.

Classes ajoutées à <body> : wsx-mn-*, wsx-mh-*, wsx-dh-*, wsx-ft-*, wsx-sw-*, wsx-sa-*, wsx-ha-*, wsx-ci-* (celles que le thème pose déjà ne sont pas doublées).

Données

ÉlémentEmplacement
RéglagesOption wsx_theme_config.
Historique des importsOption wsx_theme_config_pkg_history.
Extensions activées par le boutonOption wsx_theme_config_ecosystem.
Couleur d'une pastilleMétadonnée de terme wsx_color.
Polices, logos, sauvegardeswp-content/uploads/websource-theme-config/{fonts,footer,backups}.

Format des paquets (wsxtheme/1)

Fichier .wsxtheme.json, ou .wsxtheme.zip contenant theme.json et un dossier assets/.

{
  "schema": "wsxtheme/1",
  "generator": {"name": "websource-theme-config", "version": "1.0.0"},
  "name": "Ma boutique",
  "languages": ["fr", "en"],
  "default_language": "fr",
  "sections": {
    "theme": {"version": 1, "label": "…", "module": "websource-theme-config", "data": {"primary": "#0369a1"}},
    "layout": {"version": 1, "label": "…", "module": "websource-theme-config", "data": {"footer_logo_light": "{{asset:assets/ab12cd34ef-light.png}}"}}
  },
  "integrity": "sha256:…"
}

Contrôles à l'ouverture : taille, schéma, empreinte d'intégrité, noms d'entrées sûrs, nombre et taux de compression des fichiers. Les clés et valeurs ressemblant à un secret sont retirées à l'export comme à l'import ; les scripts sont neutralisés ; les adresses du site deviennent {{base_url}}. Les réglages head_extra et admin_palette ne voyagent jamais.