Régie publicitaire locale, simple, respectueuse de la vie privée pour WordPress.
JustAds vous permet de gérer vos propres publicités 300×600 dans WordPress, sans dépendre d'aucune régie externe. Pas de tracker tiers. Pas de cookies. Pas d'appel sortant. Juste vos pubs, votre site, vos données.
- Fonctionnalités
- Prérequis
- Installation
- Utilisation
- Architecture
- Vie privée et tracking
- Désinstallation
- Contribuer
- Licence
- 🎨 Éditeur visuel par publicité : image de fond, flou, overlay, logo, titre, description, bouton, bordure, animation
- 🧱 Bloc Gutenberg « JustAds Sidebar » à insérer dans n'importe quel article ou page
- 📐 Format 300×600 optimisé pour les barres latérales — anti-CLS, skeleton loader natif
- 🎯 Ciblage exclusif par tag ou catégorie d'article (réutilise les taxonomies natives WP)
- 🏢 Annonceurs (taxonomie dédiée) pour grouper les pubs d'une même entreprise — base prête pour les campagnes
- 📊 Statistiques par publicité : vues, clics, CTR, courbe quotidienne (modal)
- 🖼️ Bibliothèque visuelle dans l'admin avec aperçus en iframe (fidèles au front), filtres et recherche
- 🔒 Tracking cookieless agrégé : aucune donnée individuelle, aucun fingerprint
- 📱 Responsive : masquage automatique sur mobile et tablette (≤ 1023 px)
- ♿️ Respect des préférences système (
prefers-reduced-motion,prefers-color-scheme)
- WordPress 6.0 ou plus récent
- PHP 7.4 ou plus récent
# 1. Téléchargez la release
# 2. Dans l'admin WordPress :
# Extensions → Ajouter → Téléverser une extension → choisir justads.zipPuis activez JustAds dans le menu Extensions.
- Créer une pub : menu JustAds → Ajouter. L'éditeur Gutenberg ouvre un canevas 300×600 verrouillé sur le template
justads/ad-template. Configurez fond, logo, titre, bouton, animation. Publiez. - Insérer dans vos pages : dans n'importe quel article, ajoutez le bloc « JustAds Sidebar ». À chaque chargement, une de vos publicités éligibles sera tirée au hasard.
- Suivre les performances : menu JustAds → Bibliothèque. Cliquez sur la barre de stats d'une carte pour ouvrir la courbe quotidienne (7 / 30 / 90 jours).
Chaque publicité réutilise les tags et catégories natifs de WordPress (panneaux standards à droite dans l'éditeur Gutenberg). La logique d'éligibilité est :
| Cas | Comportement |
|---|---|
| Pub sans tag ni catégorie | Universelle — affichée partout par défaut |
| Pub avec tag ou catégorie + article correspond | Affichée — et exclut les pubs universelles sur cet article |
| Pub avec tag ou catégorie + article ne correspond pas | Non affichée |
Exemple. Vous avez 5 pubs universelles et 1 pub taguée sauvegarde. Sur un article sans tag sauvegarde, le tirage se fait parmi les 5 universelles. Sur un article tagué sauvegarde, seule la pub sauvegarde est candidate — l'exclusivité du sponsor est garantie.
Les correspondances tag ou catégorie suffisent : une pub peut viser à la fois sauvegarde (tag) et Tutoriels (catégorie) ; n'importe laquelle des deux match suffit.
JustAds expose une taxonomie dédiée justads_advertiser (menu JustAds → Annonceurs). Vous y créez vos sponsors (ex. « Acme Corp », « Boutique du coin »), puis vous les attachez à vos publicités dans l'éditeur.
- Quand un annonceur est attaché, son nom apparaît en tout petit en bas de la pub côté visiteur (overlay non cliquable, transparent pour ne pas casser le design 300×600).
- Plusieurs publicités peuvent partager le même annonceur — c'est la base sur laquelle reposeront les campagnes dans une future version (rotation au sein d'un annonceur, stats consolidées, période d'activité…).
Vous pouvez d'ores et déjà commencer à structurer vos pubs par annonceur — aucune migration de données ne sera nécessaire pour activer les campagnes plus tard.
justads/
├── justads.php # Bootstrap : header, constantes, hooks d'activation
├── uninstall.php # Nettoyage à la suppression du plugin
├── readme.txt # Readme WordPress.org
├── README.md # Ce fichier
├── LICENSE # GPL v2+
├── includes/
│ ├── class-justads-plugin.php # Orchestrateur (singleton)
│ ├── class-justads-cpt.php # CPT `justads_ad` + taxonomie `justads_advertiser`
│ ├── class-justads-targeting.php # Éligibilité tag/catégorie + nom annonceur
│ ├── class-justads-tracking.php # Schéma DB + statistiques
│ ├── class-justads-blocks.php # Enregistrement des blocs Gutenberg
│ ├── class-justads-library.php # Page admin « Bibliothèque »
│ └── class-justads-ajax.php # Endpoints AJAX (front + admin)
└── build/
├── block.json # Manifest du bloc conteneur
├── render.php # Rendu front du bloc conteneur
├── frontend.js # Tirage aléatoire + tracking (vanilla)
├── frontend.asset.php
├── index.js # Éditeur Gutenberg (vanilla)
├── index.asset.php
├── index.css # Styles éditeur
├── style-index.css # Styles front
├── library.js # Bibliothèque admin (vanilla)
├── library.css # Styles bibliothèque
└── ad-template/
├── block.json # Manifest du template d'annonce
└── render.php # Rendu d'une annonce 300×600
| Surface | Préfixe |
|---|---|
| Constantes PHP | JUSTADS_ |
| Classes PHP | JustAds_ |
| Hooks / actions | justads_ |
| Actions AJAX | justads_* / justads_library_* |
| Options | justads_db_version |
| Transients | justads_* |
| Table SQL | {prefix}justads_tracking |
| Custom Post Type | justads_ad |
| Taxonomies dédiées | justads_advertiser (+ category, post_tag réutilisées) |
| Blocs Gutenberg | justads/sidebar, justads/ad-template |
| Classes CSS | justads-* |
| Variable JS globale | JustAdsLibrary |
JustAds suit deux événements par publicité : vue (rendu effectif) et clic (premier clic sur le lien). Le suivi est :
- Anonyme : aucune IP, aucun fingerprint, aucun identifiant utilisateur n'est stocké.
- Agrégé : la base contient seulement des compteurs par
(ad_id, type, date, heure). - Limité en débit : un hachage
sha256(IP + heure_courante + wp_salt)est conservé uniquement en cache objet (jamais sur disque), pendant 1 h pour les vues et 5 min pour les clics, pour empêcher le double comptage. - Protégé par nonce : tous les endpoints AJAX vérifient un nonce WordPress (
justads_frontendcôté front,justads_librarycôté admin).
Aucun appel sortant n'est effectué. Les URLs de polices et de styles du thème actif sont stockées dans un transient uniquement pour permettre à la bibliothèque admin de rendre des aperçus fidèles dans des iframes — rien n'est envoyé à un tiers.
À la désactivation, seuls les transients du plugin et les règles de rewrite sont nettoyés. Vos publicités et vos statistiques sont conservées.
À la suppression depuis la page Extensions, uninstall.php :
- supprime la table
{prefix}justads_tracking - supprime l'option
justads_db_version - supprime le transient
justads_frontend_font_urls - vide le groupe de cache objet
justads
Les publicités (CPT justads_ad) ne sont pas supprimées : ce sont vos données. Supprimez-les manuellement avant la désinstallation si vous le souhaitez.
Le plugin est volontairement compact (~700 lignes de PHP, vanilla JS, aucun build). Toute contribution doit :
- Respecter les WordPress Coding Standards (PHPCS-WPCS).
- Échapper toute sortie HTML / attribut (
esc_html,esc_attr,esc_url,wp_kses_post). - Vérifier un nonce et une capability sur tout endpoint AJAX qui mute des données.
- Préfixer toute fonction, classe, constante, option, transient, hook par
justads. - Aucune intégration tierce (Amazon, Google Ads, Adsense, etc.) — par design.
GPL v2 ou ultérieure. Voir LICENSE.
Ce plugin est dérivé d'un travail antérieur (« React AdSense Sidebar ») dont toutes les intégrations tierces (Amazon Creators API, fallback Amazon, comparatif Amazon ↔ local) ont été supprimées pour repartir d'une base 100 % locale et libre.