Indice dei contenuti Plus

Table of Contents Plus è un plugin WordPress potente ma facile da usare che crea automaticamente un indice o una tabella dei contenuti (TOC) specifica per il contesto per pagine lunghe (e tipi di post personalizzati). Più di un semplice plugin per la tabella dei contenuti, questo plugin può anche generare una sitemap che elenca pagine e/o categorie in tutto il tuo sito.

Descrizione

Costruita da zero e pensando a Wikipedia, la tabella dei contenuti appare di default prima della prima intestazione in una pagina. Questo consente all'autore di inserire contenuti introduttivi che possono riassumere o presentare il resto della pagina. Utilizza inoltre uno schema di numerazione unico che non si perde attraverso le differenze CSS tra i temi.

Questo plugin è un ottimo compagno per siti ricchi di contenuti come configurazioni orientate ai sistemi di gestione dei contenuti. Detto questo, anche i blogger ottengono gli stessi vantaggi quando scrivono lunghi articoli strutturati.

ToC Plus include un pannello delle opzioni di amministrazione dove puoi personalizzare impostazioni come la posizione di visualizzazione, definire il numero minimo di intestazioni prima che venga visualizzato un indice, altri aspetti visivi e altro ancora. Per gli utenti esperti, espandi le opzioni avanzate per ottimizzare ulteriormente il suo comportamento, tra cui:

  • Escludi livelli di intestazione indesiderati come h5 e h6 dall'inclusione;
  • Disabilita l'output del file CSS incluso;
  • Regola l'offset superiore e altro ancora.

Utilizzando gli shortcode, puoi sovrascrivere il comportamento predefinito come esclusioni speciali su una pagina specifica o persino nascondere completamente la tabella dei contenuti.

Preferisci includere l'indice nella barra laterale? Vai su Aspetto > Widget e trascina TOC+ nella barra laterale e nella posizione desiderata.

I tipi di post personalizzati sono supportati, tuttavia, l'inserimento automatico funziona solo quando the_content() è stato utilizzato dal tipo di post personalizzato. Ogni tipo di post apparirà nel pannello delle opzioni, quindi abilita quelli che desideri.

Screenshot

Un esempio della tabella dei contenuti, posizionata in alto, allineata a destra e con una larghezza di 275px
Un esempio dello shortcode sitemap_pages
Un esempio dello shortcode sitemap_posts
Il pannello delle opzioni si trova in Impostazioni > TOC+
Alcune opzioni avanzate
La scheda sitemap

Installa / Aggiorna

Installa il plugin cercando Table of Contents Plus dalla schermata Aggiungi Plugin, o direttamente dal repository dei plugin di WordPress.

Non ci sono istruzioni speciali per l'aggiornamento. Sovrascrivi la tua cartella esistente con l'ultima versione o usa l'approccio semplificato nel menu del plugin. Le tue opzioni non andranno perse.

Aiuto

L'approccio più semplice

Per gli impazienti, tutto ciò che devi fare è abilitare il plugin.

Il plugin applicherà le impostazioni predefinite e produrrà la tabella dei contenuti prima della prima intestazione nelle pagine (non nei post, né nei tipi di post personalizzati) con quattro o più intestazioni.

Non sono necessari shortcode.

Dov'è la mia tabella dei contenuti?

  1. Nella maggior parte dei casi, il post, la pagina o il tipo di post personalizzato ha meno del numero minimo di intestazioni. Per impostazione predefinita, questo è impostato su quattro, quindi assicurati di avere almeno quattro intestazioni all'interno del tuo contenuto. Se desideri modificare questo valore, puoi trovarlo in 'Opzioni principali' > 'Mostra quando'.
  2. L'inserimento automatico è abilitato per il tuo tipo di contenuto? Per impostazione predefinita, sono abilitate solo le pagine.
  3. Hai [no_toc] da qualche parte nel contenuto? Questo disabiliterà l'indice per il post, la pagina o il tipo di post personalizzato corrente.
  4. Se stai usando il widget TOC+, controlla se hai abilitato "Mostra la tabella dei contenuti solo nella barra laterale", poiché ciò limiterà la sua visualizzazione solo alla barra laterale. Puoi verificarlo andando su Aspetto > Widget.
  5. Potresti aver limitato la generazione a una corrispondenza di percorso URL. L'impostazione si trova nella sezione avanzata sotto Opzioni principali.

Come posso impedire che la tabella dei contenuti appaia su una singola pagina?

Inserisci il seguente [no_toc] ovunque nella pagina per sopprimere la tabella dei contenuti. Questo è noto come shortcode e funziona per post, pagine e tipi di post personalizzati che utilizzano the_content()

Ho impostato l'incapsulamento su sinistra o destra ma le intestazioni non vanno a capo attorno alla tabella dei contenuti

Ciò si verifica normalmente quando è presente una direttiva CSS clear nell'intestazione o intorno ad essa, proveniente dal tema (Twenty Eleven e Twenty Twelve sono due temi che lo fanno). Questa direttiva indica all'agente utente di reimpostare le specifiche di wrapping precedenti.

Puoi regolare il CSS del tuo tema o provare a spostare la posizione della tabella dei contenuti in cima alla pagina.

Prova ad aggiungere il seguente CSS per consentire al wrapping di verificarsi attorno all'indice:

h1, h2, h3, h4, h5, h6 { clear: none; }

Come includo il nome della pagina nel titolo dell'indice?

Poiché il titolo della pagina cambia a seconda della pagina visualizzata, è possibile utilizzare la seguente variabile speciale per inserire automaticamente il titolo della pagina nell'intestazione dell'indice:

%PAGE_NAME%

Puoi usarlo così com'è o posizionare testo su entrambi i lati della variabile.

Ad esempio: se la tua pagina si chiama Grandi Speranze e il titolo del tuo indice è impostato su Contenuti per %PAGE_NAME%, il titolo finale sarà Contenuti per Grandi Speranze

Il mio sito ha 100 pagine ma voglio che l'indice appaia solo su 10 di esse

Potresti inserire [no_toc] su 90 pagine, ma non sarebbe divertente... quindi prova quanto segue:

  1. Vai su Impostazioni > TOC+ e disabilita l'opzione di inserimento automatico per le pagine (o il tipo di contenuto con cui stai lavorando).
  2. Aggiungi [toc] sulle 10 pagine che ne hanno bisogno. Nota che l'indice apparirà dove hai posizionato lo shortcode.

In alternativa, potresti anche sperimentare con l'opzione 'restrict path' se le pagine su cui vuoi includere l'indice rientrano tutte in una determinata sezione del tuo sito (ad es. /doc/).

Voglio ignorare alcune intestazioni

Usa l'opzione 'exclude headings' se desideri ignorare determinate intestazioni. Separa più intestazioni con una barra verticale |. Usa un asterisco * come carattere jolly per corrispondere ad altro testo. Nota che non è sensibile alle maiuscole. Alcuni esempi includono:

  • Fruit* ignora le intestazioni che iniziano con Fruit
  • *Fruit Diet* ignora le intestazioni con Fruit Diet da qualche parte nell'intestazione
  • Apple Tree|Oranges|Yellow Bananas ignora le intestazioni che sono esattamente Apple TreeOranges o Yellow Bananas

Posso avere l'indice nella barra laterale?

Usa il widget TOC+ e trascinalo nella posizione desiderata. Se vuoi che l'indice venga visualizzato solo nella barra laterale, assicurati di selezionare quell'opzione nel widget.

A differenza di Wikipedia, voglio che tutte le mie ancore siano minuscole e usino trattini invece di underscore

Ci sono due opzioni che ti permettono di regolare la capitalizzazione e l'uso dei trattini. Se hai ancora bisogno di altro, puoi modificarlo ulteriormente agganciandoti al filtro toc_url_anchor_target. Vedi la sezione sviluppatori sottostante per un esempio.

Vorrei incorporare una sitemap

  1. Crea una pagina per la tua sitemap (se ne hai già una, usa quella invece).
  2. Inserisci [sitemap] nella tua pagina e salva.

Quanto sopra è l'esempio più semplice di integrazione di una sitemap che elenca tutte le pagine e le categorie. Puoi personalizzare le opzioni della sitemap in Impostazioni > TOC+ o controllare alcuni degli usi più avanzati con gli shortcode relativi alla sitemap qui sotto.

Potresti anche incorporare una sitemap utilizzando un widget di testo e incollando uno qualsiasi degli shortcode della sitemap.

La sitemap utilizza un font strano, diverso dal resto del sito

Non vengono creati stili aggiuntivi per la sitemap, invece eredita gli stili che hai utilizzato quando hai aggiunto lo shortcode. Se hai copiato e incollato, probabilmente hai copiato anche i tag 'code' che lo circondano, quindi rimuovili se questo è il caso.

Nella maggior parte dei casi, prova a mettere lo shortcode su una riga separata, senza nulla prima o dopo le parentesi quadre.

Shortcode

Il plugin è stato progettato per essere il più fluido e indolore possibile e non richiedeva l'inserimento di uno shortcode per il funzionamento. Tuttavia, l'utilizzo dello shortcode ti consente di controllare completamente la posizione dell'indice dei contenuti all'interno della tua pagina. Gli shortcode seguenti sono disponibili con questo plugin.

Quando i parametri vengono omessi per gli shortcode sottostanti, verranno ripristinate le impostazioni definite in Impostazioni > TOC+.

[toc]

Consente di generare l'indice dei contenuti nella posizione preferita. Utile anche per siti che richiedono un TOC solo su un piccolo numero di pagine.

Attributi:

  • label: testo, titolo dell'indice dei contenuti
  • no_label: true/false, mostra o nasconde il titolo
  • wrapping: testo, 'left' o 'right'
  • heading_levels: numeri, questo ti permette di selezionare i livelli di intestazione che vuoi includere nell'indice dei contenuti. Separa più livelli con una virgola. Esempio: includi le intestazioni 3, 4 e 5 ma escludi le altre con heading_levels="3,4,5"
  • exclude: testo, inserisci le intestazioni da escludere. Separa più intestazioni con una barra verticale |. Usa un asterisco * come carattere jolly per corrispondere ad altro testo. Potresti anche usare espressioni regolari per una corrispondenza più avanzata.
  • class: testo, inserisci le classi CSS da aggiungere al contenitore. Separa più classi con uno spazio.

[no_toc]

Ti consente di disabilitare l'indice dei contenuti per il post, la pagina o il tipo di post personalizzato corrente.

[sitemap]

Produce un elenco di tutte le pagine e categorie per il tuo sito. Puoi usarlo su qualsiasi post, pagina o anche in un widget di testo.

[sitemap_pages]

Consente di stampare un elenco solo delle pagine.

Attributi:

  • heading: numero compreso tra 1 e 6, definisce quale intestazione html utilizzare
  • label: testo, titolo dell'elenco
  • no_label: true/false, mostra o nasconde l'intestazione dell'elenco
  • exclude: ID delle pagine o categorie che si desidera escludere
  • exclude_tree: ID della pagina o categoria che si desidera escludere, inclusi tutti i suoi discendenti

[sitemap_categories]

Simile a [sitemap_pages] ma per le categorie.

[sitemap_posts]

Questo ti permette di stampare un indice di tutti gli articoli pubblicati sul tuo sito. Per impostazione predefinita, gli articoli sono elencati in ordine alfabetico raggruppati per le loro lettere iniziali. Ci sono classi CSS per ogni sezione, lettera e lista che ti permettono di personalizzare l'aspetto.

Attributi:

  • order: testo, ASC o DESC
  • orderby: testo, opzioni popolari includono “title”, “date”, “ID” e “rand”. Vedi WP_Query per un elenco.
  • separate: true/false (predefinito su true), non separa le liste per lettera iniziale quando impostato su false.

Per sviluppatori

Come personalizzo le mie ancore?

Se non sei ancora soddisfatto delle ancore, puoi modificarle per adattarle alle tue esigenze tramite una funzione personalizzata agganciata al filtro toc_url_anchor_target. Ad esempio, inserisci il seguente snippet di codice nel tuo file functions.php per convertire tutte le ancore in maiuscolo.

function my_custom_anchor( $anchor ) {
	return strtoupper( $anchor );
}
add_filter( 'toc_url_anchor_target', 'my_custom_anchor' );

toc_get_index( $content = ”, $prefix_url = ” )

Restituisce una stringa formattata in HTML dell'indice dei contenuti senza i tag UL o OL esterni per consentire all'editor del tema di fornire i propri ID e/o classi alla lista esterna.

Entrambi i parametri sono opzionali:

  • $content è l'intero contenuto con le intestazioni. Se vuoto, utilizzerà per impostazione predefinita il contenuto corrente trovato in $post (ad esempio all'interno del “loop”).
  • $prefix_url è l'URL da anteporre all'ancora. Se viene fornita una stringa, verrà utilizzata così com'è. Se impostato su true allora tenterà di ottenere il permalink dall'oggetto $post.

Questi esempi presuppongono che tu sia all'interno del “loop”:

  1. Ottieni l'indice per la pagina corrente:

echo '<ul id="my_toc">' . toc_get_index() . '</ul>';

2. Crea un elenco di tutti i figli e le loro intestazioni:

$children = new WP_Query(array(
  'post_parent' => get_the_ID(),
  'posts_per_page' => -1	// get all children
));
while ( $children->have_posts() ) {
  $children->the_post();
  echo 
 '<h3>' . get_the_title() . '</h3>' .
 '<ul>' . toc_get_index( get_the_content(), get_permalink( $children->post->ID ) ) . '</ul>'
  ;
}
wp_reset_postdata();