// caso-studio
WP Custom Slider
Plugin WordPress leggero che espone uno shortcode per uno slider Splide delle categorie WooCommerce, guidato da campi ACF sui termini di tassonomia - controllo editoriale totale, zero page builder.
Cos'è
Un plugin WordPress che aggiunge uno shortcode per renderizzare uno slider Splide delle categorie prodotto WooCommerce. È nato come astrazione di un'esigenza ricorrente nei siti e-commerce che seguo in agenzia — e ripulito per diventare codice pubblico: un solo file PHP, un JS e un CSS.
Il problema
Mostrare le categorie in uno slider è una richiesta che torna in quasi ogni e-commerce, ma le soluzioni tipiche sono due estremi: un widget del page builder (pesante, poco controllabile) o markup hardcoded nel tema (che ogni modifica editoriale trasforma in un ticket). Serviva la terza via: il controllo resta a chi edita i contenuti, il codice non si tocca più.
Come funziona
La configurazione vive sui termini di tassonomia tramite campi ACF: un flag "includi nello slider", un titolo custom e un'immagine dedicata. Il plugin interroga le categorie, tiene solo quelle marcate e scarta in silenzio tutto ciò che non è completo:
foreach ($categories as $category) {
$term_key = 'term_' . $category->term_id;
$include = get_field('includi_nello_slider', $term_key);
if (!$include) continue;
$link = get_term_link($category);
if (is_wp_error($link)) continue;
// niente immagine, niente slide: meglio uno slider più corto che uno rotto
if (empty($img_url)) continue;
}
Lo shortcode accetta attributi sanitizzati (slides, autoplay, interval con minimo 1 secondo, classe extra) e ogni istanza riceve un ID univoco: più slider sulla stessa pagina convivono senza pestarsi.
Dettagli di cui vado fiero
Gli asset si caricano solo se servono. Splide e i file del plugin vengono registrati al wp_enqueue_scripts, ma accodati solo quando lo shortcode viene effettivamente renderizzato. Una pagina senza slider non paga un byte.
// Registrato sempre, accodato solo dentro lo shortcode:
wp_enqueue_style('splide');
wp_enqueue_script('custom-category-slider');
Fallisce nel modo giusto, due volte. Lato admin, se mancano ACF o WooCommerce compaiono notice espliciti che dicono cosa installare; lato frontend, le stesse condizioni producono una stringa vuota — il visitatore non vede mai un errore, l'editor sì.
L'init JS è idempotente. Ogni slider viene marcato con dataset.splideInitialized al primo mount: se il tema o un builder rilancia gli script, niente doppie inizializzazioni. E i valori letti dai data-* vengono ri-validati anche lato client, con fallback sensati.
Cosa ho imparato
- Il confine giusto tra codice e contenuto in WordPress passa dai termini di tassonomia: ACF sui term è sottovalutato
- "Ritorna stringa vuota" è spesso la migliore gestione d'errore frontend che esista
- Estrarre un plugin da un progetto cliente e ripulirlo per la pubblicazione insegna più design del codice originale