custom content type in Wordpress 3.0

3 views
Skip to first unread message

Giovanni Baldini

unread,
Jul 4, 2010, 12:27:03 PM7/4/10
to Anpi.it
Ciao a tutti,
vi scoccio con la prima richiesta di aiuto per WordPress 3.0
Abbiate pazienza, è la prima volta che mi cimento in configurazioni
non banali di questa piattaforma.

Sto componendo i vari custom content type per immagazzinare le varie
tipologie di contenuto che abbiamo nel sito attuale.
Parto dalle biografie, che sono una delle parti più ampie e pregiate.
Date un occhio qui:
http://anpi.it/uomini.htm

L'obiettivo è di poter navigare fra le biografie per Cognome,
selezionando prima l'iniziale, così come avviene adesso. Oppure
selezionando una regione, che sarà la regione di nascita o di dove è
stato svolto il partigianato (quindi è possibile più di una
selezione).
Ho pensato anche ad una selezione per decorazione, tipo Medaglia d'Oro
al Valor Militare. E una classificazione per sesso.
Ma per ora non le ho implementate. Non so se sono buone idee, forse la prima sì.

Al momento sono interessato a comporre l'amministrativo.
Campi:
- Nome
- Cognome
- iniziale del Cognome (se non specificata dovrebbe essere calcolata
automaticamente)
- abstract (ad esempio, vedete come è strutturato il testo qui:
http://anpi.it/uomini/ballerini.htm)
- corpo della biografia
- autore (perché l'autore delle oltre 2500 biografie ha fatto la
Resistenza e non ho intenzione di sottoporlo ad un corso intensivo su
WP, quindi devo poter specificarlo a mano)

Tassonomia:
- Regione o Nazione (non gerarchica)


Qui trovate il codice che ho scritto e che non funziona malaccio.
Le domande stanno dopo il codice.

---------------------------------------------------------
add_action( 'init', 'biography_create_post_type' );

function biography_create_post_type() {
register_post_type( 'biography',
array(
'labels' => array(
'name' => __( 'Biographies' ),
'singular_name' => __( 'Biography' ),
'add_new' => __( 'Add New' ),
'add_new_item' => __( 'Add New Biography' ),
'edit' => __( 'Edit' ),
'edit_item' => __( 'Edit Biography' ),
'new_item' => __( 'New Biography' ),
'view' => __( 'View Biography' ),
'view_item' => __( 'View Biography' ),
'search_items' => __( 'Search Biographies' ),
'not_found' => __( 'No biographies found' ),
'not_found_in_trash' => __( 'No biographies found in Trash' ),
'parent' => __( 'Parent Biography' ),
),
'description' => __( 'A biography is a text describing the life of
women and men that made Resistance.' ),
'menu_position' => 20,
'public' => true,
'show_ui' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'hierarchical' => false,
'supports' => array( 'author', 'excerpt', 'editor' ),
'rewrite' => array( 'slug' => 'donne_e_uomini', 'with_front' => false ),
)
);
register_taxonomy( 'region', 'biography', array( 'hierarchical' =>
false, 'label' => __('Regione o nazione estera') ) );

}

add_action("admin_init", "biography_admin_init");
add_action('save_post', 'biography_save');

function biography_admin_init() {
add_meta_box("biography-meta", "Nome e Cognome",
"biography_meta_options", "biography", "normal", "high");
}

function biography_meta_options() {
global $post;
$custom = get_post_custom($post->ID);
?>
<label>Nome:</label><input name="first_name" value="<?php echo
$custom["first_name"][0]; ?>" />
<label>Cognome:</label><input name="family_name" value="<?php echo
$custom["family_name"][0]; ?>" />
<br /><label>Iniziale del cognome:</label><input
name="family_name_ini" value="<?php echo
$custom["family_name_ini"][0]; ?>" /> (opzionale)

<?php
}

function biography_save() {
global $post;
if ( $_POST["family_name_ini"] ) {
update_post_meta($post->ID, "family_name_ini", $_POST["family_name_ini"][0]);
} else {
update_post_meta($post->ID, "family_name_ini", $_POST["family_name"][0]);
}
update_post_meta($post->ID, "family_name", $_POST["family_name"]);
update_post_meta($post->ID, "first_name", $_POST["first_name"]);
}

--------------------------------------------------

1. Dove lo metto questo codice?
Io l'ho piazzato in coda a functions.php del tema scelto, è una buona idea?
Quali sono le buone pratiche in questo caso?

2. Al momento l'ordine in cui vengono visualizzati i campi
nell'amministrativo è:
- corpo della biografia
- nome, cognome, iniziale
- abstract
- autore
A me piacerebbe piazzare il corpo della biografia dopo l'abstract, come si fa?

3. Per far veloce ho usato 'excerpt' per fare l'abstract, ma è
necessario scrivere testo ricco, con dei link.
Com'è che posso fare? Devo definire un nuovo campo custom e collegare
alla relativa textarea un'istanza di TinyMCE?

4. Vedete grosse idiozie?

Grazie,
Giovanni

Eusebio Giandomenico

unread,
Jul 5, 2010, 6:10:31 AM7/5/10
to anp...@googlegroups.com
Mi spiace non poterti aiutare con il codice, non ho queste competenze, posso pero' invitarti ad una riflessione sul modello che hai scelto: sei sicuro che si tratti di "anagrafiche" (informaticamente parlando)?
Il sito ANPI ha un grande archivio documentale dove anche le biografie sono - a tutti gli effetti - dei documenti.
Un altro approccio potrebbe prevedere l'utilizzo di un modulo come questo:
http://wordpress.org/extend/plugins/bibliofly/

considerando poi il fatto che l'utilizzo di moduli standard facilita la manutenzione del sistema, eventuali modifiche del codice - slegate dello sviluppo del sistema principale - potrebbero causare conflitti e - di conseguenza - problemi nell'installare gli aggiornamenti della piattaforma.

Buon lavoro


Eusebio

Giovanni Baldini

unread,
Jul 5, 2010, 6:35:26 AM7/5/10
to anp...@googlegroups.com
Certo, hai ragione.
Però se voglio riprodurre l'attuale situazione con una catalogazione
per Cognome (e iniziale del cognome), più una per regione/i di
nascita/partigianato come faccio?
A me viene in mente solo l'uso di Custom Content Type con una sua
tassonomia associata.

Il codice è semplice, dubito sia facilmente causa di incompatibilità in avanti.
E non vedo grandi problemi di sicurezza, perché è comunque tutta roba
lato amministrativo.


Giovanni

Il 05 luglio 2010 12.10, Eusebio Giandomenico
<eusebio.gi...@gmail.com> ha scritto:

> --
> Hai ricevuto questo messaggio perché sei iscritto al gruppo "Anpi.it" di
> Google Gruppi.
> Per postare messaggi in questo gruppo, invia un'email a
> anp...@googlegroups.com.
> Per annullare l'iscrizione a questo gruppo, invia un'email a
> anpi_it+u...@googlegroups.com.
> Per ulteriori opzioni, visita il gruppo all'indirizzo
> http://groups.google.com/group/anpi_it?hl=it.
>

Eusebio Giandomenico

unread,
Jul 5, 2010, 10:00:36 AM7/5/10
to anp...@googlegroups.com
Il giorno 05 luglio 2010 12.35, Giovanni Baldini <giovanni...@gmail.com> ha scritto:
Certo, hai ragione.
Però se voglio riprodurre l'attuale situazione con una catalogazione
per Cognome (e iniziale del cognome), più una per regione/i di
nascita/partigianato come faccio?

Il codice è semplice, dubito sia facilmente causa di incompatibilità in avanti.
E non vedo grandi problemi di sicurezza, perché è comunque tutta roba
lato amministrativo.

Nemmeno io ma la prudenza non e' mai troppa in certi casi.

Eusebio

Giovanni Baldini

unread,
Jul 5, 2010, 12:27:48 PM7/5/10
to anp...@googlegroups.com
Non sono mica tanto sicuro che sia una buona idea, io sono un po'
sospettoso dei plugin di terzi, almeno per cose così particolari.
Chessò: per un calendario di eventi magari il discorso è diverso
perché è una problematica comune, ma per le biografie ANPI (e
prossimamente per le sedi) mi pare portino più guai che benefici.

Prendi ad esempio l'ultimo che mi hai segnalato: in WP3.0 è una
tragedia, se attivi il debug vieni tempestato da warnings perché usa
funzioni deprecate da tempo, anche dalla versione 2.0
Un plugin così chiaramente non lo posso usare.

Ho visto che la comunità di WP discute se creare o meno un gruppo di
plugin core, che avanzano di pari passo al motore. Ecco, con plugin in
questa categoria mi sentirei più tranquillo, ma con quelli di terzi
no.

Giovanni

Il 05 luglio 2010 16.00, Eusebio Giandomenico
<eusebio.gi...@gmail.com> ha scritto:
>
>

Eusebio Giandomenico

unread,
Jul 5, 2010, 12:42:03 PM7/5/10
to anp...@googlegroups.com
Il giorno 05 luglio 2010 18.27, Giovanni Baldini <giovanni...@gmail.com> ha scritto:
Ho visto che la comunità di WP discute se creare o meno un gruppo di
plugin core, che avanzano di pari passo al motore. Ecco, con plugin in
questa categoria mi sentirei più tranquillo, ma con quelli di terzi
no.

Concordo che una funzione core sarebbe l'ideale.
Comunque tu procedi per la modifica del codice
Se trovo altre vie degne di nota te le segnalo.



 
Reply all
Reply to author
Forward
0 new messages