<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>diploD &#187; custom fields</title>
	<atom:link href="http://www.diplod.it/tag/custom-fields/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.diplod.it</link>
	<description>by Davide Del Monte</description>
	<lastBuildDate>Fri, 13 Feb 2015 14:26:10 +0000</lastBuildDate>
	<language>it-IT</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>Gestione dei Custom Post e dei Custom Fields in WordPress</title>
		<link>http://www.diplod.it/2012/10/01/gestione-dei-custom-post-e-dei-custom-fields-in-wordpress/</link>
		<comments>http://www.diplod.it/2012/10/01/gestione-dei-custom-post-e-dei-custom-fields-in-wordpress/#comments</comments>
		<pubDate>Mon, 01 Oct 2012 16:23:48 +0000</pubDate>
		<dc:creator><![CDATA[Davide]]></dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[contenuti]]></category>
		<category><![CDATA[custom fields]]></category>
		<category><![CDATA[custom post types]]></category>
		<category><![CDATA[custom taxonomies]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=1353</guid>
		<description><![CDATA[Sempre più temi e plugin Wordpress utilizzano custom post types e custom fields. Al di là dell'informatichese, di cosa si tratta? Ecco cosa sono e come usarli per costruire temi dedicati.]]></description>
				<content:encoded><![CDATA[<p>Sempre più temi e plugin WordPress utilizzano <strong>custom post types</strong> e <strong>custom fields</strong>. Al di là dell&#8217;informatichese, di cosa si tratta? Il modo più semplice per spiegarlo è attraverso un esempio. Immagina il sito di una band, con news e quant&#8217;altro.</p>
<p>Immagina che questa band voglia avere una sezione dove presenta i propri dischi, magari un widget sulla sidebar o una pagina dedicata. Servirà quindi un <strong>tipo di post personalizzato</strong>: non sono articoli semplici, non sono pagine. Sono dischi. E a questi dischi verranno associati anche una serie di <strong>campi personalizzati</strong>, come ad esempio l&#8217;anno di produzione, l&#8217;etichetta, i crediti per il missaggio. E poi, perchè no, anche il video di youtube, se questo esiste. Infine, questi dischi possono appartenere a due diverse categorie: album o singoli.</p>
<p>Si tratta insomma di un oggetto a parte, da usare nel pannello di amministrazione di wordpress, che poi apparirà come rappresentato nell&#8217;immagine sotto.</p>
<p><a href="http://www.diplod.it/wp-content/uploads/2012/09/dischi-bacheca.png"><img class="alignnone size-large wp-image-1354" title="dischi-bacheca" src="http://www.diplod.it/wp-content/uploads/2012/09/dischi-bacheca-1024x712.png" alt="" width="573" height="399" /></a></p>
<p><span id="more-1353"></span>Per fare ciò, il punto centrale è il famoso file di template <em>functions.php</em>, vediamo quali sono le cose da fare.</p>
<p>Dovremo innanzi tutto dichiarare il nuovo tipo post, dicendo che questo nuovo oggetto sarà &#8220;catalogabile&#8221; con due tassonomie: i <em>tag </em>e le <em>tipologie</em>. I <em>tag </em>sono i conosciuti tag nativi di wordpress che vengono utilizzati anche nei normali post del blog, mentre le <em>tipologie </em>sono una nuova tassonomia custom, che andremo a definire in seguito, e ci servirà per contraddistinguere i singoli dagli album, o comunque per creare una sorta di categorie per i post di tipo <em>disco</em>. Partiamo quindi aggiungendo il codice qui sotto:</p>
<p><code>/*******************************<br />
DISCHI<br />
aggiunge un tipo post custom dal nome "disco"<br />
che avrà un titolo, un contenuto esteso, un riassunto,<br />
il riferimento all'autore e una immagine in evidenza,<br />
oltre ad alcuni attributi custom<br />
********************************/</code></p>
<p><code> </code></p>
<p><code>add_action( 'init', 'register_cpt_disco' );<br />
function register_cpt_disco() {<br />
$labels = array(<br />
'name' =&gt; _x( 'Dischi', 'disco' ),<br />
'singular_name' =&gt; _x( 'Disco', 'disco' ),<br />
'add_new' =&gt; _x( 'Aggiungi Nuovo', 'disco' ),<br />
'add_new_item' =&gt; _x( 'Aggiungi Nuovo Disco', 'disco' ),<br />
'edit_item' =&gt; _x( 'Modifica Disco', 'disco' ),<br />
'new_item' =&gt; _x( 'Nuovo Disco', 'disco' ),<br />
'view_item' =&gt; _x( 'Visualizza Disco', 'disco' ),<br />
'search_items' =&gt; _x( 'Cerca Dischi', 'disco' ),<br />
'not_found' =&gt; _x( 'Nessun disco trovato', 'disco' ),<br />
'not_found_in_trash' =&gt; _x( 'Nessun disco trovato nel cestino', 'disco' ),<br />
'parent_item_colon' =&gt; _x( 'Disco Padre:', 'disco' ),<br />
'menu_name' =&gt; _x( 'Dischi', 'disco' ),<br />
);<br />
$args = array(<br />
'labels' =&gt; $labels,<br />
'hierarchical' =&gt; false,<br />
'description' =&gt; 'Dischi della Band',<br />
//specifico quali proprietà avrà questo nuovo tipo di post<br />
'supports' =&gt; array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'custom-fields' ),<br />
'taxonomies' =&gt; array( 'tipologie', 'post_tag' ),<br />
'public' =&gt; true,<br />
'show_ui' =&gt; true,<br />
'show_in_menu' =&gt; true,<br />
'show_in_nav_menus' =&gt; true,<br />
'publicly_queryable' =&gt; true,<br />
'exclude_from_search' =&gt; false,<br />
'has_archive' =&gt; true,<br />
'query_var' =&gt; true,<br />
'can_export' =&gt; true,<br />
'rewrite' =&gt; true,<br />
'capability_type' =&gt; 'post'<br />
);<br />
register_post_type( 'disco', $args );<br />
}<br />
/* aggiungo dei custom fields (year_completed, videoid, labelc,credits) al tipo post "disco"<br />
il primo (year_completed) lo aggiungo come "year_completed-meta"<br />
gli altri (videoid, labelc,credits) li aggiungo come "credits_meta" */<br />
add_action("admin_init", "admin_init");<br />
function admin_init(){<br />
add_meta_box("year_completed-meta", "Year Completed", "year_completed", "disco", "side", "low");<br />
add_meta_box("credits_meta", "Credits", "credits_meta", "disco", "normal", "low");<br />
}<br />
function year_completed(){<br />
global $post;<br />
$custom = get_post_custom($post-&gt;ID);<br />
$year_completed = $custom["year_completed"][0];<br />
?&gt;<br />
&lt;label&gt;Year:&lt;/label&gt;<br />
&lt;input name="year_completed" value="&lt;?php echo $year_completed; ?&gt;" /&gt;<br />
&lt;?php }<br />
function credits_meta() {<br />
global $post;<br />
$custom = get_post_custom($post-&gt;ID);<br />
$videoid = $custom["videoid"][0];<br />
$labelc = $custom["labelc"][0];<br />
$credits = $custom["credits"][0]; ?&gt;<br />
&lt;p&gt;&lt;label&gt;Youtube Video ID:&lt;/label&gt;&lt;br /&gt;<br />
&lt;textarea cols="50" rows="5" name="videoid"&gt;&lt;?php echo $videoid; ?&gt;&lt;/textarea&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;label&gt;Label credits:&lt;/label&gt;&lt;br /&gt;<br />
&lt;textarea cols="50" rows="5" name="labelc"&gt;&lt;?php echo $labelc; ?&gt;&lt;/textarea&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;label&gt;Mastering credits:&lt;/label&gt;&lt;br /&gt;<br />
&lt;textarea cols="50" rows="5" name="credits"&gt;&lt;?php echo $credits; ?&gt;&lt;/textarea&gt;&lt;/p&gt;<br />
&lt;?php } ?&gt;<br />
</code><br />
Ora dobbiamo invece definire una nuova tassonomia per questo tipo di post, servirà quindi aggiungere anche il codice sottostante:<br />
<code><br />
add_action( 'init', 'register_taxonomy_tipologie' );<br />
function register_taxonomy_tipologie() {<br />
$labels = array(<br />
'name' =&gt; _x( 'Tipologie', 'tipologie' ),<br />
'singular_name' =&gt; _x( 'Tipologia', 'tipologie' ),<br />
'search_items' =&gt; _x( 'Cerca Tipologie', 'tipologie' ),<br />
'popular_items' =&gt; _x( 'Tipologie Principali', 'tipologie' ),<br />
'all_items' =&gt; _x( 'Tutte le Tipologie', 'tipologie' ),<br />
'parent_item' =&gt; _x( 'Parent Tipologia', 'tipologie' ),<br />
'parent_item_colon' =&gt; _x( 'Parent Tipologia:', 'tipologie' ),<br />
'edit_item' =&gt; _x( 'Modifica Tipologia', 'tipologie' ),<br />
'update_item' =&gt; _x( 'Aggiorna Tipologia', 'tipologie' ),<br />
'add_new_item' =&gt; _x( 'Aggiungi nuova Tipologia', 'tipologie' ),<br />
'new_item_name' =&gt; _x( 'Nuova Tipologia', 'tipologie' ),<br />
'separate_items_with_commas' =&gt; _x( 'Separate tipologie with commas', 'tipologie' ),<br />
'add_or_remove_items' =&gt; _x( 'Add or remove tipologie', 'tipologie' ),<br />
'choose_from_most_used' =&gt; _x( 'Choose from the most used tipologie', 'tipologie' ),<br />
'menu_name' =&gt; _x( 'Tipologie', 'tipologie' ),<br />
);<br />
$args = array(<br />
'labels' =&gt; $labels,<br />
'public' =&gt; true,<br />
'show_in_nav_menus' =&gt; true,<br />
'show_ui' =&gt; true,<br />
'show_tagcloud' =&gt; false,<br />
'hierarchical' =&gt; true,<br />
'rewrite' =&gt; true,<br />
'query_var' =&gt; true<br />
);<br />
register_taxonomy( 'tipologie', array('disco'), $args );<br />
}<br />
// al salvataggio dei post i valori dei custom fields devono essere memorizzati<br />
add_action('save_post', 'save_details');<br />
function save_details(){<br />
global $post;<br />
update_post_meta($post-&gt;ID, "year_completed", $_POST["year_completed"]);<br />
update_post_meta($post-&gt;ID, "videoid", $_POST["videoid"]);<br />
update_post_meta($post-&gt;ID, "labelc", $_POST["labelc"]);<br />
update_post_meta($post-&gt;ID, "credits", $_POST["credits"]);<br />
}<br />
</code><br />
Si può scrivere questo codice a mano, oppure possono venirci in aiuto due comodissimi tool on line (entrambi di <a title="themergency generators" href="http://themergency.com/generators/" target="_blank">themergency</a>):</p>
<ul>
<li><a title="Wordpress Custom Post Types Generator" href="http://themergency.com/generators/wordpress-custom-post-types/" target="_blank">WordPress Custom Post Types Generator</a></li>
<li><a title="Wordpress custom taxonomies generator" href="http://themergency.com/generators/wordpress-custom-taxonomy/" target="_blank">WordPress Custom Taxonomies Generator</a></li>
</ul>
<p>A questo punto non resta che installare il nostro tema e popolare il sito di contenuti custom, che poi potranno essere utilizzati per creare layout specifici. Questo è un argomento che non viene trattato qui, ma giusto per dare un&#8217;imbeccata, basti pensare a come è possibile impostare la funzione <a title="Query Post" href="http://codex.wordpress.org/Function_Reference/query_posts" target="_blank">query_posts()</a> indicando di estrarre dei custom post types:</p>
<p><code><br />
&lt;?php<br />
//prendo gli ultimi 16 dischi nella categoria album<br />
query_posts('showposts=16&amp;post_type="disco"&amp;tipologie="album"');<br />
?&gt;<br />
</code></p>
<p>Per chi volesse approfondire il tema, ecco alcune <strong>utili risorse</strong>:</p>
<ul>
<li><a href="http://net.tutsplus.com/tutorials/wordpress/rock-solid-wordpress-3-0-themes-using-custom-post-types/" target="_blank">http://net.tutsplus.com/tutorials/wordpress/rock-solid-wordpress-3-0-themes-using-custom-post-types/</a></li>
<li><a href="http://wp.tutsplus.com/tutorials/quick-tip-3-tools-for-making-instant-custom-post-types/" target="_blank">http://wp.tutsplus.com/tutorials/quick-tip-3-tools-for-making-instant-custom-post-types/</a></li>
<li><a href="http://justintadlock.com/archives/2010/04/29/custom-post-types-in-wordpress" target="_blank">http://justintadlock.com/archives/2010/04/29/custom-post-types-in-wordpress</a></li>
<li><a href="http://designwoop.com/2012/05/quality-tutorials-for-creating-wordpress-custom-post-types/" target="_blank">http://designwoop.com/2012/05/quality-tutorials-for-creating-wordpress-custom-post-types/</a></li>
<li><a href="http://wptheming.com/2011/11/event-posts-in-wordpress/">http://wptheming.com/2011/11/event-posts-in-wordpress/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2012/10/01/gestione-dei-custom-post-e-dei-custom-fields-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creare un sito paid to write con wordpress</title>
		<link>http://www.diplod.it/2009/01/29/creare-un-sito-paid-to-write-con-wordpress/</link>
		<comments>http://www.diplod.it/2009/01/29/creare-un-sito-paid-to-write-con-wordpress/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 19:42:47 +0000</pubDate>
		<dc:creator><![CDATA[Davide]]></dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[campi personalizzati]]></category>
		<category><![CDATA[custom fields]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[personalizzazione]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[write to paid]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=739</guid>
		<description><![CDATA[Vanno molto di moda i siti paid to write, ovvero quei portali di informazione dove gli autori dei pezzi vengono remunerati per ciò che scrivono. Fondamentalmente esistono due tipi di remunerazioni: Per articolo: ad esempio 10 euro ogni articolo che scrivi Tramite adsense: l&#8217;autore inserisce il proprio annuncio pubblicitario adsense e viene pagato in base [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Vanno molto di moda i siti <strong>paid to write</strong>, ovvero quei portali di informazione <strong>dove gli autori dei pezzi vengono remunerati per ciò che scrivono</strong>. Fondamentalmente esistono due tipi di remunerazioni:</p>
<ul>
<li><strong>Per articolo</strong>: ad esempio 10 euro ogni articolo che scrivi</li>
<li><strong>Tramite adsense</strong>: l&#8217;autore inserisce il proprio annuncio pubblicitario adsense e viene pagato in base ai clic</li>
</ul>
<p>Generalmente il secondo è quello più utilizzato, saranno gli utenti stessi, coi loro accessi e i loro clic, a decretare il successo o meno di un articolo. Il concetto è semplice: ogni autore possiede un account <a title="google adsense" href="www.google.com/adsense" target="_blank">Google Adsense</a> e gli viene concesso di inserire un annuncio relativo al proprio Publisher ID all&#8217;interno dell&#8217;articolo che scrive.<br />
Il Publisher ID si trova in alto a destra nel pannello di amministrazione di Google Adsense, tipicamente è una stringa del tipo <em>pub-1234567890</em>. Questa stringa appare nel codice html degli annunci, nell&#8217;esempio seguente è evidenziata in grassetto:</p>
<blockquote><p>&lt;script type=&#8221;text/javascript&#8221;&gt;&lt;!&#8211;<br />
google_ad_client = &#8220;<strong>pub-1234567890</strong>&#8220;;<br />
google_ad_width = 468;<br />
google_ad_height = 60;<br />
google_ad_format = &#8220;468x60_as&#8221;;<br />
google_ad_type = &#8220;text&#8221;;<br />
google_ad_channel = &#8220;&#8221;;<br />
google_color_border = &#8220;FFFFFF&#8221;;<br />
google_color_bg = &#8220;FFFFFF&#8221;;<br />
google_color_link = &#8220;CCCCCC&#8221;;<br />
google_color_text = &#8220;000000&#8243;;<br />
google_color_url = &#8220;666666&#8243;;<br />
//&#8211;&gt;<br />
&lt;/script&gt;<br />
&lt;script type=&#8221;text/javascript&#8221;<br />
src=&#8221;http://pagead2.googlesyndication.com/pagead/show_ads.js&#8221;&gt;<br />
&lt;/script&gt;</p></blockquote>
<p>Per costruire un sito web write to paid, potremmo utilizzare i campi personalizzati di wordpress. Se chiediamo agli autori di creare un campo dal nome <em>adsenseID</em> e compilarlo con il proprio publisher ID, ogni volta che scrivono un nuovo articolo, potremo andare poi a ripescarlo nel tema di wordpress per pubblicare il suo gruppo di annunci.</p>
<p><span id="more-739"></span></p>
<p>Creare un campo personalizzato è molto semplice: dall&#8217;editor di scrittura, sotto alla finestra di testo, basta aggiungere nome e valore e premere il tasto &#8220;Aggiungi campo personalizzato&#8221;.</p>
<p><img class="alignnone size-full wp-image-740" title="campo-personalizzato" src="http://www.diplod.it/wp-content/uploads/2009/01/campo-personalizzato.png" alt="" width="725" height="197" /></p>
<p>I modi per visualizzare i campi personalizzati nel tema sono descritti molto accuratamente qui: <a href="http://codex.wordpress.org/Using_Custom_Fields">http://codex.wordpress.org/Using_Custom_Fields</a><br />
La funzione che ci interessa è <em>get_post_meta($post_id, $key, $single)</em></p>
<ul>
<li>$post_id è l&#8217;ID odel post per il quale vogliamo visualizzare il campo personalizzato. Si può usare $post-&gt;ID per ricavare quello del post attuale all&#8217;interno del <a title="wordpress loop" href="http://codex.wordpress.org/The_Loop" target="_blank">loop</a></li>
<li>$key è la stringa che identifica l campo personalizzato, nel nostro caso sarà adsenseID (creato in precedenza)</li>
<li>$single è un valore booleano (vero/falso). Se impostato a true la funzione restituisce un risultato singolo, come stringa. Se impostato a false, o non impostato, la funzione restituisce un array coi campi personalizzati</li>
</ul>
<p>Dove vogliamo far apparire gli annunci bastarà scrivere, nel file del tema (ad esempio in single.php):</p>
<blockquote><p>&lt;?php $key=&#8221;adsenseID&#8221;; ?&gt;<br />
&lt;script type=&#8221;text/javascript&#8221;&gt;&lt;!&#8211;<br />
google_ad_client = &#8220;&lt;?php echo get_post_meta($post-&gt;ID, $key, true); ?&gt;&#8221;;<br />
google_ad_width = 468;<br />
google_ad_height = 60;<br />
google_ad_format = &#8220;468x60_as&#8221;;<br />
google_ad_type = &#8220;text&#8221;;<br />
google_ad_channel = &#8220;&#8221;;<br />
google_color_border = &#8220;FFFFFF&#8221;;<br />
google_color_bg = &#8220;FFFFFF&#8221;;<br />
google_color_link = &#8220;CCCCCC&#8221;;<br />
google_color_text = &#8220;000000&#8243;;<br />
google_color_url = &#8220;666666&#8243;;<br />
//&#8211;&gt;<br />
&lt;/script&gt;<br />
&lt;script type=&#8221;text/javascript&#8221;<br />
src=&#8221;http://pagead2.googlesyndication.com/pagead/show_ads.js&#8221;&gt;<br />
&lt;/script&gt;</p></blockquote>
<p>Non è altro che il codice precedente, dove al posto del pub-1234567890 abbiamo messo la funzione php che stampa l&#8217;ID relativo al post. Ovviamente è possibile personalizzare il fomato e i colori del blocco di annunci, modificando gli opportuni parametri.</p>
<p>Se poi volessimo in qualche modo tenere traccia degli articoli più popolari, per valorizzarli e riconoscere un premio agli autori in grado di scrivere contenuti validi, potremmo utilizzare il <strong><a title="Popularity Contest Wordpres Plugin" href="http://wordpress.org/extend/plugins/popularity-contest/" target="_blank">Popularity Contest Plugin</a></strong>, che permette di impostare una serie di parametri tramite i quali valutare un post.</p>
<p>Semmai un giorno vorrete fare un sito tipo <a title="Ewrite.us" href="http://it.ewrite.us/" target="_blank">Ewrite.us</a> o <a title="MondoInformatico.info" href="http://www.mondoinformatico.info/" target="_blank">MondoInformatico.info</a>, potete provare così..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2009/01/29/creare-un-sito-paid-to-write-con-wordpress/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
	</channel>
</rss>
