Blog

Estendere theme.json ai tipi di post personalizzati e agli output dei plugin: una guida pratica

Scopri come applicare le impostazioni di theme.json ai tipi di post personalizzati e ai contenuti dei plugin per un design coerente su tutto il tuo sito WordPress.

Riepilogo

Molti sviluppatori WordPress creano tipi di post personalizzati o plugin che generano contenuti (ad esempio, testimonianze, portfolio). Tuttavia, theme.json — la configurazione centrale per gli stili globali — spesso ignora questi elementi personalizzati di default, portando a un design disomogeneo. Questo articolo ti guida attraverso la registrazione dei tipi di post personalizzati per ereditare gli stili di theme.json, sovrascrivere le impostazioni per blocchi specifici e collegare l'output del plugin ai token di design principali. Troverai istruzioni passo passo, esempi reali come la stilizzazione di un CPT 'Membro del Team' e avvertenze su prestazioni e conflitti di terze parti. Alla fine, potrai garantire che qualsiasi contenuto personalizzato corrisponda al sistema di design definito dall'editor del tuo sito.

Hai mai costruito un tipo di post personalizzato o integrato un plugin di terze parti, solo per scoprire che il suo output ignora completamente il bellissimo sistema di design che hai configurato con cura in theme.json? Non sei solo. Per impostazione predefinita, theme.json si applica solo ai blocchi principali di WordPress e agli stili di blocco registrati, lasciando i tipi di post personalizzati e i contenuti generati dai plugin a cavarsela da soli. Questo di solito si traduce in CSS inline, stack di font duplicati o una palette di colori non corrispondente che rompe l'esperienza utente. Ma c'è un modo migliore: puoi estendere theme.json per coprire questi elementi personalizzati, garantendo un sistema di design coerente e manutenibile su tutto il tuo sito. In questa guida, tratteremo quattro passaggi pratici per realizzarlo, completi di esempi di codice e avvertenze del mondo reale.

Comprendere l'ambito di theme.json

Prima di addentrarci, è fondamentale capire che theme.json è un concetto dei temi a blocchi. Definisce stili globali, impostazioni (come palette di colori e dimensioni dei caratteri) e stili specifici per blocco nell'editor di blocchi e nel frontend. Tuttavia, la sua portata è limitata: controlla solo i blocchi che dichiarano esplicitamente il supporto per le proprietà di theme.json tramite register_block_type o la vecchia add_theme_support. I tipi di post personalizzati creati con register_post_type non ereditano automaticamente questi stili a meno che non siano costruiti con blocchi o esplicitamente stilizzati.

Passo 1: Registrare i tipi di post personalizzati con supporto dell'editor a blocchi

Il primo passo è assicurarsi che il tuo tipo di post personalizzato utilizzi l'editor a blocchi. Quando chiami register_post_type, imposta 'show_in_rest' => true e includi 'editor' nell'array supports. Questo abilita l'editor a blocchi per quel tipo di post, permettendo agli autori di utilizzare gli stili a livello di blocco da theme.json. Ad esempio, ecco un CPT 'Membro del Team':

function create_team_member_cpt() {
    $args = array(
        'public' => true,
        'show_in_rest' => true,
        'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields' ),
        'show_in_menu' => true,
        'labels' => array(
            'name' => 'Team Members',
            'singular_name' => 'Team Member',
        ),
        'rewrite' => array( 'slug' => 'team' ),
    );
    register_post_type( 'team_member', $args );
}
add_action( 'init', 'create_team_member_cpt' );

Ora, quando modifichi un post del membro del team, vedrai l'editor a blocchi con gli stili globali del tuo tema applicati ai blocchi principali come Paragrafo, Titolo e Immagine. Questo da solo spesso risolve la maggior parte dei problemi di stile. Se hai bisogno di un controllo più granulare, passa al passaggio successivo. Per un approfondimento sulla creazione di temi a blocchi con theme.json, consulta Come costruire un tema a blocchi WordPress personalizzato con theme.json.

Passo 2: Aggiungere stili di blocco personalizzati tramite theme.json

A volte vuoi applicare stili specifici a tutte le istanze del contenuto del tuo tipo di post personalizzato, ad esempio dare all'intero post un colore di sfondo o un padding speciale. Puoi puntare a core/post-content o avvolgere il tuo contenuto in un blocco gruppo personalizzato e stilizzarlo tramite theme.json. Aggiungi quanto segue al tuo file theme.json sotto l'oggetto styles:

{
  "styles": {
    "blocks": {
      "core/post-content": {
        "css": "background-color: var(--wp--preset--color--light); padding: 2rem;"
      }
    }
  }
}

Questo applicherà uno sfondo chiaro e un padding all'area del contenuto di tutti i post, incluso il tuo CPT Membro del Team. Puoi anche definire variazioni specifiche per blocco all'interno di settings.blocks per fornire opzioni di stile nell'editor.

Passo 3: Utilizzare le proprietà personalizzate di theme.json per l'output del plugin

I plugin spesso generano contenuti tramite shortcode, widget o blocchi personalizzati. Per stilizzarli coerentemente, sfrutta le proprietà CSS personalizzate generate da theme.json. Ad esempio, se il tuo tema definisce un colore primario come --wp--preset--color--primary, puoi usarlo nel CSS del tuo plugin:

.my-plugin-button {
    background-color: var(--wp--preset--color--primary);
    font-size: var(--wp--preset--font-size--medium);
}

Questo garantisce che quando l'amministratore del sito cambia la palette di colori in theme.json, il pulsante del tuo plugin si aggiorni automaticamente. Per rendere robusto questo approccio, usa sempre le variabili CSS preimpostate invece di codificare valori. Inoltre, se il tuo plugin registra i propri blocchi, puoi ereditare le impostazioni di theme.json utilizzando useSetting in JavaScript o passando $attributes nel rendering PHP, come spiegato in Padroneggiare i blocchi dinamici di WordPress.

Passo 4: Gestire i blocchi dinamici

Per i blocchi personalizzati che generano contenuti dinamici (ad esempio, uno slider di testimonianze), devi registrare il blocco con supporto dell'editor a blocchi e collegarlo esplicitamente a theme.json. In PHP, usa register_block_type con $args che includono 'render_callback' e assicurati che il file block.json del tuo blocco imposti 'supports' => array( 'color' => true, 'typography' => true ). Quindi, nella tua callback di rendering, puoi accedere agli stili globali tramite wp_get_global_styles() e applicarli. Ad esempio:

function render_testimonial_block( $attributes, $content ) {
    $styles = wp_get_global_styles();
    $color = $styles['elements']['link']['color']['text'] ?? '#000';
    return '<div style="color: ' . esc_attr( $color ) . ';">' . $content . '</div>';
}

Questo approccio garantisce che il tuo blocco personalizzato rispetti i token di design del tema. Per ulteriori informazioni sulla registrazione dei blocchi, consulta Costruire plugin WordPress robusti.

Avvertenze

Sebbene estendere theme.json sia potente, fai attenzione a queste insidie:

  1. Prestazioni: Aggiungere troppi stili personalizzati in theme.json può appesantire il file e aumentare il tempo di parsing CSS. Attieniti alle impostazioni globali e usa gli stili specifici per blocco con parsimonia.
  2. Conflitti tra plugin: Alcuni plugin reimpostano o sovrascrivono le impostazioni di theme.json. Testa sempre con un set minimo di plugin e considera l'uso di hook in after_setup_theme per riapplicare le tue personalizzazioni.
  3. Temi classici: Se il tuo tema non utilizza l'editor a blocchi (cioè è un tema classico), theme.json ha un effetto limitato. Considera di migrare a un tema a blocchi o di usare la funzione wp_enqueue_global_styles per caricare gli stili.
  4. Cache del browser: Le modifiche a theme.json potrebbero non apparire immediatamente a causa della cache. Pulisci la cache del browser e usa il versioning per il tuo foglio di stile.

Conclusione

Ora hai una chiara tabella di marcia per far sì che i tipi di post personalizzati e gli output dei plugin interagiscano bene con il tuo sistema di design theme.json. La chiave è registrare il tuo CPT con supporto dell'editor a blocchi, definire stili specifici per il blocco del contenuto del post, utilizzare le proprietà CSS personalizzate nell'output del plugin e registrare i tuoi blocchi personalizzati con una corretta integrazione di theme.json. Questo approccio elimina le incoerenze, riduce la manutenzione e dà agli amministratori del sito il potere di controllare l'aspetto e la sensazione da un'unica fonte di verità. Inizia a implementare questi passaggi oggi per portare coesione ai tuoi progetti WordPress.

Sources (5)