Historique des versions de PipnHub
admin.inc.php) supprimait toutes les valeurs existantes d'une meta key (ex : Tradker) avant de réinsérer celles du CSV, avec risque de perte de données si le CSV ne reprenait pas 100% des valeurs déjà en base. Le comportement est désormais additif : seules les valeurs absentes de l'existant sont ajoutées (array_diff), aucune valeur déjà présente n'est supprimée
pnh_layout : la meta pnh_layout, le sélecteur "Layout d'affichage" de la metabox "Flags Pip'n'Hub", le routage correspondant dans single.php et les templates single-hub.php / single-channel.php sont retirés. Ce mécanisme ne reliait jamais réellement le template choisi à la donnée de regroupement du même nom (le bloc Clips/Albums ne s'affichait que sur single-default.php, jamais sur single-hub.php) et mélangeait deux responsabilités indépendantes : le choix du template et la donnée de regroupement
single-default.php : ce bloc, codé en dur pour la meta Hub et les slugs de catégorie Clips/Albums, est retiré du template générique. Le regroupement par catégorie est désormais une responsabilité du thème enfant
PNH_GetPostsByMetaAndCategory() (lib/posts.inc.php) : généralise PNH_GetPostsByHubAndCategory() à n'importe quelle meta key (Pip, Hub, Channel, ou autre) et n'importe quel slug de catégorie — destinée à être appelée depuis un template de thème enfant routé par catégorie. PNH_GetPostsByHubAndCategory() est conservée en alias de compatibilité (@deprecated)
CLAUDE.md mis à jour — Pip/Hub/Channel documentées comme données de regroupement pures, le déclenchement d'affichage groupé appartenant au thème enfant (catégorie + clé), pas au thème parent
PNH_SIDEBAR_KAHLENDAR_ENABLED (défaut : true) dans parts/sidebar/full-bottom.php — permet à un thème enfant de désactiver le bloc Kahlendar sans dupliquer le fichier ni générer d'appel à l'API kahlendar.com quand désactivé
PNH_SIDEBAR_WIDGETS (array) dans parts/sidebar/full-bottom.php — permet à un thème enfant de choisir la liste et l'ordre des blocs de la grille (défaut inchangé : last-posts, categories, tags, social, about)
newsletter est inclus manuellement dans PNH_SIDEBAR_WIDGETS, il n'est plus ajouté une seconde fois automatiquement lorsque PNH_SIDEBAR_NEWSLETTER_FULLWIDTH est à false
PNH_WIDGET_ABOUT_IMAGE dans widget-about.php — affiche une image optionnelle au-dessus du texte, indépendante du logo du site
force_columns dans parts/front-page/posts-grid.php — permet de désactiver le remap automatique de colonnes (3→5, 4→6, 5→8) sur les blocs 100% carrés, pour conserver un nombre de colonnes fixe si besoin
PNH_Deferred_Styles() (lib/setup.inc.php) sépare désormais le CSS critique (variables, reset, base, layout, child-variables) chargé en <link rel="stylesheet"> bloquant classique, du CSS non-critique conservé en preload différé — élimine le flash de contenu non stylé au premier paint
@import redondants dans assets/css/pipnhub.css — ce fichier réimportait variables.css, reset.css, base.css, layout.css, components.css, utilities.css, article.css, loading.css et header.css en interne, via un chemin relatif pointant toujours vers les fichiers du thème parent. Chargé en dernier dans la cascade, il écrasait systématiquement la surcharge des couleurs d'un thème enfant (variables.css enfant) juste après le premier affichage
parts/components/breadcrumb.php remonte désormais toute la chaîne des catégories parentes via get_ancestors() (pages catégorie et articles) — un article dans une catégorie fille affiche Accueil / Catégorie mère / Catégorie fille / Titre au lieu d'ignorer la catégorie mère
transform: scale(...) au survol des images (post-card, hero-image, spotlight-image, post-list-image) dans components.css et components.spaced.css — le zoom rognait visuellement les vignettes au survol. Suppression également du transform: translateY(-4px) sur .post-card:hover (effet de soulèvement de la carte) ; l'ombre portée et la bordure d'accent au survol sont conservées
pnh_layout permettant à un post de charger un template d'affichage différent (parts/single/single-{layout}.php), sur le même principe que le routeur de pages (page.php). single.php route désormais dynamiquement via locate_template(), avec fallback sur single-default.php si la meta est vide ou si le template n'existe pas
<select> dans la metabox "Flags Pip'n'Hub" (PNH_PostFlagsMetaboxRender) pour choisir le layout (Défaut, Hub, Channel), sauvegardé via PNH_PostFlagsSaveMeta
single-hub.php et single-channel.php créés (affichage basique du contenu du post, à enrichir ultérieurement)
Channel : nouvelle meta de regroupement de posts, même logique que Hub, déclarée via register_post_meta
Wikipedia, Genius, Imdb, Discogs (un seul lien par plateforme), déclarées via register_post_meta
Liens dans PNH_GetGroups() pour l'export/import CSV des champs personnalisés
parts/single/article-source.php affichant les liens renseignés (non encore intégré dans les templates single)
admin_post_pnh_export_csv) utilisait un tableau $groups codé en dur, resté désynchronisé de PNH_GetGroups() depuis le refactor de la 1.2.3 — il pointe maintenant vers PNH_GetGroups(), garantissant que tout nouveau groupe (dont Liens) est disponible à l'export
[lang] est remplacé par un attribut natif Gutenberg (pnhLang) — chaque bloc dispose désormais d'un sélecteur FR / EN / Aucune dans le panneau latéral de l'éditeur, sans quitter l'expérience Gutenberg (liens, images et tous les blocs natifs sont pleinement supportés)
assets/js/lang-editor.js — extension Gutenberg chargée uniquement dans le backoffice via enqueue_block_editor_assets
pnh-lang-group--2, un bloc isolé dans pnh-lang-group--1
pnh-lang-editor avec ses dépendances Gutenberg (wp-blocks, wp-hooks, wp-element, wp-block-editor, wp-components, wp-compose)
[lang], variable globale $pnh_lang_pending et fonction PNH_LangShortcode retirés de utils.inc.php
assets/css/fa7sub.css, assets/font/) — suppression de la dépendance au CDN externe cdn.skwizd.com
PNH_FONTAWESOME_VERSION et PNH_FONTAWESOME_CDN_PATH mises à jour pour pointer vers les assets locaux (version 7.2.sub)
?ver=x) sont désormais correctement détectés par le filtre Cache-Control
preconnect / dns-prefetch vers cdn.skwizd.com et googletagmanager.com (commentés)
reziztanz.org/share.js
bots.krafsht.com/call.js — suppression de l'ancienne dépendance cdn.skwizd.com
#cartouche + cdn.reziztanz.org/cartouche.js)
skwizd.com/img/ (ancienne URL cdn.skwizd.com/zzz/shops/ supprimée)
Amazon, Fnac, etc.)
pipmesh.inc.php) — scanne tous les posts publiés et détecte les opportunités de liens internes en croisant les tags et catégories du site avec le contenu de chaque article
admin-post.php, avec nonce)
|
PNH_GetMetaKeys() et PNH_GetMetaDuplicates() (plus de duplication entre la page admin et l'endpoint AJAX)
PNH_GetGroups() (partagés entre affichage, export et import)
<code> par valeur)
.wrap WordPress
wp_date() utilisé à la place de date() pour respecter la timezone WordPress
pnh_search_posts (fix sécurité)
sanitize_key() utilisé pour construire la clé d'option (au lieu de esc_attr())
wp_kses_post() ou esc_html() selon le contexte)
.htaccess simplifié — les endpoints sched.json.php et stats.json.php sont autorisés via une exception FilesMatch directe (suppression du bloc séparé redondant)
Youtube ou Tradker sont présentes sur l'article
form-feedback.css / form-feedback.js) uniquement sur la page contact, avec handle pnh-bundle enregistré pour résoudre les dépendances
Pip, Hub, Youtube et Tradker sont enregistrées en REST API avec auth_callback (remplacement des anciennes clés PIP/HUB typées integer sans protection)
id= sur les titres préserve désormais le HTML interne de la balise Hx (<strong>, <em>…) au lieu de le supprimer
pnh_copyright_year)
sanitize_text_field + wp_unslash)
echo $notice sécurisées avec wp_kses_post() dans admin.inc.php et sitemap.inc.php ; _e() remplacé par esc_html_e() dans taxonomy.inc.php
??) par des isset() pour compatibilité PHP 7 ; indentation uniformisée
rediacteur est renseignée sur un article, une mention "rédigé avec l'assistance de l'IA" s'affiche automatiquement avec le lien source
SameSite: Strict, clés API et URL hardcodées supprimées et remplacées par des constantes
www.pipnhub.com
PIPNHEST pour les sous-domaines et domaines externes
[lang] : permet d'afficher des blocs bilingues côte à côte dans les articles — [lang code="fr"]...[/lang][lang code="en"]...[/lang]
[hidden] : masque visuellement un bloc de contenu, révélable au clic, mais reste présent dans le DOM pour Google
grid-all-square avec plus de colonnes pour mieux tirer parti de l'espace
parts/front-page/front-page.php) à surcharger dans le thème enfant avec les blocs souhaités (posts-grid, posts-list, posts-remote, hero-featured, spotlight-grid)
Template sans dépendre du slug
remote.inc.php (appels API) et game.inc.php
modified (date de dernière mise à jour) en plus de date
lib/ : setup, posts, display, SEO, sitemap, admin, update...)
/api/sched, /api/stats)