WordPress - Custom field
WordPress è una delle piattaforme di blogging più utilizzate al mondo, quella che per svariati motivi (soprattutto in virtù della sua ampia capacità gestionale) ho deciso di adottare per redigere il Diario. Le potenzialità di questo sistema unite alla disponibilità di uno spazio interamente mio, e pertanto personalizzabile, mi ha portato nel tempo a modificare e ampliare direttamente la gestione dei post, integrando nuove funzionalità inizialmente non previste. In alcuni casi avrei potuto scegliere semplicemente di attivare all’interno della mia copia di WordPress alcuni plugin già pronti, ma così facendo avrei dovuto adattare le mie necessità a funzionalità già implementate da altri, invece di definirle intorno ad esse.
Una delle modifiche che mi è capitato di implementare è stata relativa all’inserimento di applicazioni esterne sia nei post, sia nelle pagine. Questo requisito si è venuto a creare quando ho pensato di inserire sul blog un lettore flash di alcuni documenti, quale ad esempio la guida alla traduzione, di modo da permetterne una più rapida visione. Purtroppo la versione base di WordPress (ancora la 2.3.3, nel mio caso) non prevede la possibilità di inserire codice all’interno delle pagine, e ove si tentasse di farlo manualmente l’editor cercherebbe di attribuirgli un senso interpretandolo e dunque rendendolo impresentabile.
Con una modifica abbastanza puntuale e semplice ho risolto questo problema ampliando le funzionalità oltre lo stesso requisito iniziale: tramite infatti un “custom field” è ora possibile inserire nelle pagine un qualsiasi contenuto che per un motivo o per un altro può essere indesiderabile scrivere direttamente nell’interfaccia testuale dell’amministratore.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <div id="content"> <?php if (have_posts()) : while (have_posts()) : the_post(); //Lettura custom field "code" $code = get_post_custom_values($key = 'code'); ob_start(); the_content(); $content = ob_get_clean(); //Sostituzione tag "[code_x]" con i custom field if (isset($code[0]) && strcmp($code[0], '') != 0) { $content = str_replace('[code_0]', $code[0], $content); } if (isset($code[1]) && strcmp($content_code[1], '') != 0) { $content = str_replace('[code_1]', $code[1], $content); } ?> <div id="post"> <h2> <a href="<?php echo get_permalink() ?>"><?php the_title(); ?></a> </h2> <div class="entry"> <?php //Pubblicazione contenuto modificato echo $content ?> </div> </div> </div> |
Il custom field usato si chiama code e nell’esempio soprastante si può inserirne un massimo di due ([code_0], [code_1]), anche se con una semplice modifica è possibile ampliare questa funzionalità anche a casistiche più complesse. Per farne uso è dunque semplicemente necessario censire un nuovo custom field con questo nome, seguito dal contenuto che si desidera appaia al suo posto, e inserire nel post o nella pagina il tag [code_x] (con “x” numero incrementale a partire da zero).
Al caricamento della pagina, i tag contenuti verranno sostituiti dai valori dei corrispettivi custom field grazie alla chiamata del metodo PHP str_replace.

