CZ Volume
Custom Post Type "Volume" to manage Post Collection in Cigno Zen
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/erremauro/cz-volume/archive/refs/heads/main.zipCZ Volume è un plugin WordPress per gestire raccolte di articoli chiamate Volumi.
Ogni Volume è un CPT (volume) e può contenere più Post (capitoli) con:
- numero capitolo per volume,
- posizione ordinabile,
- flag
Volume Principaleper identificare il volume di riferimento del capitolo.
Lo stesso Post può appartenere a più Volumi con numerazioni diverse.
Funzionalità principali
- CPT
volumepubblico con archivio/volumie supporto REST. - Tabella custom
{$wpdb->prefix}cz_volume_itemsper relazioni volume/capitolo. - Gestione capitoli da admin con
WP_List_Table:- aggiunta/rimozione,
- ordinamento drag&drop,
- salvataggio AJAX.
- API REST custom (
cz-volume/v1) per leggere e gestire relazioni. - Caching con transient (
12h) e invalidazione automatica. - Metabox su
postper assegnare il post ai volumi con UI a token/chips. - Regola
Volume Principalelato metabox post: il primo volume selezionato viene impostato come principale. - Metabox su
volumeper:- copertina,
- file EPUB,
- file PDF,
- switch
Completato.
- Cleanup controllato in deactivation/uninstall.
- Caricamento asset con preferenza per file minificati (
.min.js/.min.css) quando disponibili. - Navigazione "Capitolo Precedente/Successivo" aggiunta automaticamente dopo il blocco "Pagine" dei post che appartengono a un Volume, con shortcode
[cz_volume_chapters_nav]per il posizionamento manuale.
Requisiti
- WordPress 6.0+
- PHP 7.4+
Installazione
- Copia la cartella
cz-volumeinwp-content/plugins/. - Attiva il plugin da Plugin > Plugin installati.
- Vai in Volumi per creare i volumi.
- Usa Volumi > Gestione Capitoli per gestire i capitoli.
Endpoint REST
Namespace: cz-volume/v1
GET /volume/{id}/chaptersGET /post/{id}/volumesPOST /volume/{id}/chapterDELETE /volume/{id}/chapter/{post_id}
Navigazione Capitoli (Precedente/Successivo)
Nei Post che appartengono a un Volume, i link "Capitolo Precedente" e "Capitolo Successivo" vengono aggiunti automaticamente subito dopo il blocco "Pagine" (wp_link_pages, se il tema lo stampa), in base all'ordine dei capitoli nel Volume Principale del post. Non serve alcuna azione editoriale, e non serve modificare i template del tema.
Note comuni (append automatico e shortcode):
- Se il post non appartiene a nessun Volume, o è l'unico capitolo, non viene stampato nulla.
- Il titolo mostrato nei link usa il campo
Mostra Comedel post (se impostato), altrimenti il titolo del post. - Vengono collegati solo capitoli il cui post è pubblicato.
- Lo stile (
assets/frontend.css) è caricato solo nelle pagine dove la navigazione viene effettivamente mostrata.
Per disattivare l'append automatico (globalmente o per singolo post):
// Disattiva ovunque.
add_filter( 'cz_volume_auto_append_nav', '__return_false' );
// Disattiva solo per alcuni post.
add_filter( 'cz_volume_auto_append_nav', function ( $enabled, $post_id ) {
if ( in_array( $post_id, array( 123, 456 ), true ) ) {
return false;
}
return $enabled;
}, 10, 2 );
Shortcode [cz_volume_chapters_nav]
Se preferisci posizionare la navigazione manualmente in un punto specifico del contenuto (invece che in fondo), inserisci lo shortcode dove vuoi: l'append automatico rileva la presenza dello shortcode già renderizzato e non duplica la navigazione.
Attributi opzionali:
volume_id— forza un Volume specifico invece del Volume Principale del post corrente.post_id— forza il post di riferimento invece di quello corrente (utile in template custom).prev_label— testo del link precedente (default: "Capitolo Precedente").next_label— testo del link successivo (default: "Capitolo Successivo").
Esempio:
[cz_volume_chapters_nav]
[cz_volume_chapters_nav prev_label="« Prima" next_label="Dopo »"]
Build asset minificati
bash script/build-assets.sh
Il comando genera automaticamente:
assets/admin.min.cssassets/admin.min.js
Il plugin carica i file minificati quando SCRIPT_DEBUG è false, con fallback automatico ai file non minificati.
Note
- Deactivation: di default non elimina i dati, ma può pulire cache transient via filtro/costante.
- Uninstall: la rimozione dati è disattivata di default e va esplicitamente abilitata.