Blocs et shortcodes
| Bloc | Shortcode | Attributs | Rendu |
|---|---|---|---|
websource/copyright | [websource_copyright] | textAlign (left, center, right) pour le bloc | Copyright de la langue courante, jetons {year} et {shop_name} remplacés. |
websource/shop-info | [websource_shop_info] | aucun | Logo 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
| Hook | Type | Rôle |
|---|---|---|
websource_theme_tokens | filtre | Reçoit les variables du thème et y ajoute celles des réglages. |
websource_theme_settings | filtre | Ajoute tous les réglages, et les clés du thème Websource (header_desktop, header_mobile, mobile_nav, footer_style, footer_text). |
websource_theme_copyright | filtre | Renvoie le HTML du copyright. |
websource_theme_copyright_html | filtre | Idem, pour un thème tiers : echo apply_filters('websource_theme_copyright_html', '');. |
websource_theme_config_copyright | action | Affiche le copyright : do_action('websource_theme_config_copyright');. |
websource_theme_footer_info | filtre | Renvoie le tableau des informations de la boutique, ou null. |
websource_theme_footer_about | action | Affiche les réseaux sociaux dans la première colonne du pied de page du thème Websource. |
websource_theme_ld_commerce | filtre | Renvoie ['shipping' => ?array, 'return_policy' => ?array]. |
websource_theme_product_variants | filtre | apply_filters('websource_theme_product_variants', '', $product_id) renvoie le HTML des pastilles. |
websource_theme_product_variants_data | filtre | Renvoie ['mode' => string, 'groups' => array]. |
Pour personnaliser l'extension
| Hook | Paramètres | Rôle |
|---|---|---|
websource_theme_config_tokens | array $tokens, array $settings | Ajouter ou modifier des variables CSS. |
websource_theme_config_inline_css | string $css, array $settings | CSS ajouté au bloc <style id="wstc-vars">. |
websource_theme_config_compat_css | string $css | Règles appliquées aux thèmes tiers (texte, liens, boutons, pastille « Promo »). Renvoyer '' pour les retirer. |
websource_theme_config_emit_organization | bool $emit | Forcer ou couper les nœuds Organization et WebSite. |
websource_theme_config_jsonld | array $nodes, array $settings | Compléter les nœuds, par exemple avec aggregateRating. |
websource_theme_config_active_currencies | string[] $codes | Devises déclarées dans currenciesAccepted. |
websource_theme_config_ecosystem | array $catalog | Liste des extensions de l'écosystème (dossier => nom). |
websource_theme_config_saved (action) | array $settings | Aprè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
| Hook | Paramètres | Rôle |
|---|---|---|
websource_theme_export (filtre) | array $sections, array $context | Ajouter 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 $context | Importer la section $key et renvoyer ['action', 'counts', 'messages']. $context : mode, dry_run, assets, languages, package_languages, options. |
websource_theme_imported (action) | array $package, array $reports | Aprè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ètre | Rôle |
|---|---|
_wpnonce (URL) | Nonce REST de WordPress (wp_rest). |
token | Nonce de l'action wsx_tc_palette. |
action | vars (aperçu) ou save (enregistrement). |
preset | Clé d'une palette : blue, forest, violet, coral, slate, raspberry, mint, amber. |
primary, secondary, accent | Trois 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.
| Variables | Contenu |
|---|---|
--color-brand-50 … --color-brand-900, --color-brand, -fill, -on, -text | Couleur 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-wst | Accent brut. |
--color-ink, --color-line, --color-page, --color-surface | Texte, bordures (transparent sans bordures), fond de page, fond des cartes. |
--color-footer, -ink, -muted, -deep, -line, -hover | Pied de page. |
--radius-xl, --radius-2xl, --wst-card-shadow | Arrondis et ombre des cartes. |
--font-sans, --font-head | Polices 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-min | Marges et hauteur de l'en-tête. |
--wsx-thumb-pad, --wsx-thumb-img-r | Cadre 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ément | Emplacement |
|---|---|
| Réglages | Option wsx_theme_config. |
| Historique des imports | Option wsx_theme_config_pkg_history. |
| Extensions activées par le bouton | Option wsx_theme_config_ecosystem. |
| Couleur d'une pastille | Métadonnée de terme wsx_color. |
| Polices, logos, sauvegardes | wp-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.