← casi-studio /

wp-custom-category-slider

// 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.

WordPressWooCommerceACFSplide
WP Custom Slider

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
_casi-studio
Apri la palette per cercare file e navigare