Accueil

Référence développeur · WordPress

Websource Panier pour WordPress — référence développeur

Bloc, code court, points d'entrée AJAX, filtres, évènements JavaScript et variables CSS de l'extension Websource Panier.

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

Guide utilisateur

Cette extension existe aussi pour : PrestaShop

Bloc

NomRenduAttributs
websource/cartServeur (render_callback)Aucun attribut propre. Prend en charge align (left, center, right).
<!-- wp:websource/cart /-->

Dans l'éditeur, le bloc affiche le bouton seul (sans mini-panier ni script).

Code court

Code courtAttributs
[websource_cart]Aucun.

Fonction publique

echo websource_cart_block(); // HTML déjà échappé ; chaîne vide si WooCommerce est absent

Le bloc peut être affiché plusieurs fois sur une page : chaque instance a son identifiant (b1, b2…).

Réglages enregistrés

Une seule option, wsx_cartblock_settings (tableau) :

CléValeursDéfaut
placementreplace, header, menu, nonereplace (thème à blocs)
menu_locationidentifiant d'un emplacement de menuvide
mode_desktopdrawer, push, dropdowndrawer
mode_mobiledrawer, pushdrawer
breakpoint320 à 1600768
push_sideright, leftright
push_selectorsélecteur CSS (200 caractères au plus) ; vide = mainvide
show_total, auto_open, show_free_shippingbooléentrue
textstitle, empty, view_cart, checkout, free_remaining, free_reached => texte (120 caractères au plus)vide

Toute valeur absente ou invalide est remplacée par sa valeur par défaut à la lecture.

Points d'entrée AJAX

L'extension ne déclare aucune route REST. Elle utilise les requêtes wc-ajax de WooCommerce, qui chargent le panier et la session du visiteur. Les réponses ne sont jamais mises en cache (Cache-Control: no-store).

Rafraîchir le bloc

MéthodeGET
Adresse/?wc-ajax=wsx_cartblock_refresh
Paramètresuid (facultatif) : identifiant du bloc à régénérer, 1 à 12 lettres minuscules ou chiffres
SécuritéLecture seule du panier du visiteur, sans jeton
curl -b cookies.txt "https://exemple.fr/?wc-ajax=wsx_cartblock_refresh&uid=b1"
{
  "html": "<div class=\"wscb has-items\" data-wscb data-uid=\"b1\" …>…</div>",
  "nonce": "5f2c9d1a7b",
  "count": 3
}

Modifier une ligne du panier

MéthodePOST
Adresse/?wc-ajax=wsx_cartblock_update
Paramètresop : up, down ou remove ; item : clé de la ligne du panier ; nonce : jeton reçu dans le HTML ou dans une réponse précédente ; uid (facultatif)
SécuritéJeton woocommerce-wsx-cartblock, lié à la session WooCommerce du visiteur
curl -b cookies.txt -X POST \
  -d "op=up&item=6f4922f45568161a8cdf4ad2299f6d23&uid=b1&nonce=5f2c9d1a7b" \
  "https://exemple.fr/?wc-ajax=wsx_cartblock_update"

Réponse : les mêmes clés que le rafraîchissement, plus error quand le changement est refusé.

{
  "error": "Il n'y a pas assez de stock pour Plaid en laine.",
  "html": "…",
  "nonce": "5f2c9d1a7b",
  "count": 5
}
Code HTTPCas
200Changement fait, ou refusé avec un message (error) : stock, quantité inférieure à 1, vente à l'unité.
400Opération inconnue.
403Jeton invalide ou périmé (code = nonce). La réponse contient un jeton neuf ; le script réessaie une fois.
404La ligne n'est plus dans le panier.
405Méthode autre que POST.

Filtres

FiltreParamètresRôle
wsx_cartblock_free_shipping_thresholdfloat $threshold, WC_Cart $cartSeuil de livraison offerte, dans la devise du panier. 0 masque la barre.
wsx_cartblock_textsarray $texts, string $localeTextes du bloc (six clés).
wsx_cartblock_auto_placebool $allow, string $where (replace, header, menu)Renvoyer false empêche un placement automatique.
websource_theme_exportarray $sectionsAjoute la section cartblock à un paquet de thème Websource.
websource_theme_importarray $report, array $paramsApplique la section cartblock (section, version, data, mode = replace ou merge, dry_run).

Les filtres de WooCommerce woocommerce_cart_item_product, woocommerce_cart_item_name, woocommerce_cart_item_permalink, woocommerce_cart_item_price, woocommerce_widget_cart_item_visible et woocommerce_update_cart_validation sont appliqués.

Exemple : seuil converti par une extension multidevise.

add_filter('wsx_cartblock_free_shipping_threshold', function ($threshold) {
    return function_exists('ma_conversion') ? ma_conversion($threshold) : $threshold;
});

JavaScript

Objet public, disponible quand un bloc est affiché :

AppelRôle
WebsourceCartBlock.refresh()Recharge le contenu de tous les blocs.
WebsourceCartBlock.open()Ouvre le mini-panier.
WebsourceCartBlock.close()Ferme le mini-panier.

Évènements écoutés sur document.body : wc-blocks_added_to_cart, wc-blocks_removed_from_cart (natifs) ; added_to_cart, removed_from_cart, updated_wc_div, updated_cart_totals, wc_cart_emptied (jQuery, seulement si jQuery est déjà sur la page).

Évènements émis après un changement fait dans le mini-panier :

ÉvènementCibleDétail
wc-blocks_added_to_cart / wc-blocks_removed_from_cartdocument.body{ preserveCartData: false } — les blocs WooCommerce se rechargent.
wc_fragment_refreshdocument.body (jQuery)Les fragments classiques de WooCommerce se rechargent.
wsx:cartblock:updateddocument{ uid, reason } avec reason = added ou removed.

Scripts et styles

IdentifiantFichierChargé quand
wsx-cartblock (CSS, JS)assets/css/front.css, assets/js/front.jsLe bloc est rendu.
wsx-cartblock-push (CSS)assets/css/push.cssLe bloc est rendu et un appareil utilise le push menu.

Variables CSS

Les mêmes que le thème Websource, toujours avec une valeur de repli.

VariableRôleRepli
--color-inkCouleur du texte#14282b
--color-brand-600Couleur principale (compteur, boutons, barre)#0f766e
--color-brand-50Fond du compteur vide, fond de la barre#effaf8
--color-lineBordures#d9e6e4
--color-surfaceFond du bouton et du mini-panier#fff
--radius-xl, --radius-2xlArrondis1rem, 1.5rem
--wst-card-shadowOmbreaucune
--wscb-wLargeur du push menumin(26rem, 88vw)

Multilingue

  • Polylang : chaque texte saisi est déclaré par pll_register_string() (groupe « Websource Cart Block ») et traduit par pll__().
  • WPML : wpml-config.xml déclare wsx_cartblock_settings > texts > * comme textes d'administration.
  • Textes proposés intégrés : fr, en, es, de, it, nl, pt ; anglais pour les autres langues.

Écarts avec le module PrestaShop

  • Pas de multiboutique.
  • Le seuil de livraison offerte vient du mode « Livraison gratuite » de la zone d'expédition du client, et non d'un réglage global. Aucune conversion de devise n'est faite par l'extension (filtre ci-dessus).
  • Les emplacements displayNav2 / displayTop deviennent : à la place du Mini-panier, après la navigation, fin d'un menu, placement manuel.
  • Les textes saisis ne le sont pas par langue : la traduction passe par Polylang ou WPML.