Elenco province italiane

Elenco province italiane per inserimento in codice HTML, PHP e JS per futuri riutilizzi

HTML <select> con funzione selected( ) di WordPress

<select id="prov" name="prov"><option value="">Seziona provincia</option>
	<option <?php selected( $_REQUEST['prov'], 'ee' ) ?> value="ee">** Paese estero **</option>
	<option <?php selected( $_REQUEST['prov'], 'ag' ) ?> value="ag">Agrigento</option>
	<option <?php selected( $_REQUEST['prov'], 'al' ) ?> value="al">Alessandria</option>
	<option <?php selected( $_REQUEST['prov'], 'an' ) ?> value="an">Ancona</option>
	<option <?php selected( $_REQUEST['prov'], 'ao' ) ?> value="ao">Aosta</option>
	<option <?php selected( $_REQUEST['prov'], 'ar' ) ?> value="ar">Arezzo</option>
	<option <?php selected( $_REQUEST['prov'], 'ap' ) ?> value="ap">Ascoli Piceno</option>
	<option <?php selected( $_REQUEST['prov'], 'at' ) ?> value="at">Asti</option>
	<option <?php selected( $_REQUEST['prov'], 'av' ) ?> value="av">Avellino</option>
	<option <?php selected( $_REQUEST['prov'], 'ba' ) ?> value="ba">Bari</option>
	<option <?php selected( $_REQUEST['prov'], 'bt' ) ?> value="bt">Barletta-Andria-Trani</option>
	<option <?php selected( $_REQUEST['prov'], 'bl' ) ?> value="bl">Belluno</option>
	<option <?php selected( $_REQUEST['prov'], 'bn' ) ?> value="bn">Benevento</option>
	<option <?php selected( $_REQUEST['prov'], 'bg' ) ?> value="bg">Bergamo</option>
	<option <?php selected( $_REQUEST['prov'], 'bi' ) ?> value="bi">Biella</option>
	<option <?php selected( $_REQUEST['prov'], 'bo' ) ?> value="bo">Bologna</option>
	<option <?php selected( $_REQUEST['prov'], 'bz' ) ?> value="bz">Bolzano</option>
	<option <?php selected( $_REQUEST['prov'], 'bs' ) ?> value="bs">Brescia</option>
	<option <?php selected( $_REQUEST['prov'], 'br' ) ?> value="br">Brindisi</option>
	<option <?php selected( $_REQUEST['prov'], 'ca' ) ?> value="ca">Cagliari</option>
	<option <?php selected( $_REQUEST['prov'], 'cl' ) ?> value="cl">Caltanissetta</option>
	<option <?php selected( $_REQUEST['prov'], 'cb' ) ?> value="cb">Campobasso</option>
	<option <?php selected( $_REQUEST['prov'], 'ci' ) ?> value="ci">Carbonia-iglesias</option>
	<option <?php selected( $_REQUEST['prov'], 'ce' ) ?> value="ce">Caserta</option>
	<option <?php selected( $_REQUEST['prov'], 'ct' ) ?> value="ct">Catania</option>
	<option <?php selected( $_REQUEST['prov'], 'cz' ) ?> value="cz">Catanzaro</option>
	<option <?php selected( $_REQUEST['prov'], 'ch' ) ?> value="ch">Chieti</option>
	<option <?php selected( $_REQUEST['prov'], 'co' ) ?> value="co">Como</option>
	<option <?php selected( $_REQUEST['prov'], 'cs' ) ?> value="cs">Cosenza</option>
	<option <?php selected( $_REQUEST['prov'], 'cr' ) ?> value="cr">Cremona</option>
	<option <?php selected( $_REQUEST['prov'], 'kr' ) ?> value="kr">Crotone</option>
	<option <?php selected( $_REQUEST['prov'], 'cn' ) ?> value="cn">Cuneo</option>
	<option <?php selected( $_REQUEST['prov'], 'en' ) ?> value="en">Enna</option>
	<option <?php selected( $_REQUEST['prov'], 'fm' ) ?> value="fm">Fermo</option>
	<option <?php selected( $_REQUEST['prov'], 'fe' ) ?> value="fe">Ferrara</option>
	<option <?php selected( $_REQUEST['prov'], 'fi' ) ?> value="fi">Firenze</option>
	<option <?php selected( $_REQUEST['prov'], 'fg' ) ?> value="fg">Foggia</option>
	<option <?php selected( $_REQUEST['prov'], 'fc' ) ?> value="fc">Forlì-Cesena</option>
	<option <?php selected( $_REQUEST['prov'], 'fr' ) ?> value="fr">Frosinone</option>
	<option <?php selected( $_REQUEST['prov'], 'ge' ) ?> value="ge">Genova</option>
	<option <?php selected( $_REQUEST['prov'], 'go' ) ?> value="go">Gorizia</option>
	<option <?php selected( $_REQUEST['prov'], 'gr' ) ?> value="gr">Grosseto</option>
	<option <?php selected( $_REQUEST['prov'], 'im' ) ?> value="im">Imperia</option>
	<option <?php selected( $_REQUEST['prov'], 'is' ) ?> value="is">Isernia</option>
	<option <?php selected( $_REQUEST['prov'], 'sp' ) ?> value="sp">La spezia</option>
	<option <?php selected( $_REQUEST['prov'], 'aq' ) ?> value="aq">L'aquila</option>
	<option <?php selected( $_REQUEST['prov'], 'lt' ) ?> value="lt">Latina</option>
	<option <?php selected( $_REQUEST['prov'], 'le' ) ?> value="le">Lecce</option>
	<option <?php selected( $_REQUEST['prov'], 'lc' ) ?> value="lc">Lecco</option>
	<option <?php selected( $_REQUEST['prov'], 'li' ) ?> value="li">Livorno</option>
	<option <?php selected( $_REQUEST['prov'], 'lo' ) ?> value="lo">Lodi</option>
	<option <?php selected( $_REQUEST['prov'], 'lu' ) ?> value="lu">Lucca</option>
	<option <?php selected( $_REQUEST['prov'], 'mc' ) ?> value="mc">Macerata</option>
	<option <?php selected( $_REQUEST['prov'], 'mn' ) ?> value="mn">Mantova</option>
	<option <?php selected( $_REQUEST['prov'], 'ms' ) ?> value="ms">Massa-Carrara</option>
	<option <?php selected( $_REQUEST['prov'], 'mt' ) ?> value="mt">Matera</option>
	<option <?php selected( $_REQUEST['prov'], 'vs' ) ?> value="vs">Medio Campidano</option>
	<option <?php selected( $_REQUEST['prov'], 'me' ) ?> value="me">Messina</option>
	<option <?php selected( $_REQUEST['prov'], 'mi' ) ?> value="mi">Milano</option>
	<option <?php selected( $_REQUEST['prov'], 'mo' ) ?> value="mo">Modena</option>
	<option <?php selected( $_REQUEST['prov'], 'mb' ) ?> value="mb">Monza e della Brianza</option>
	<option <?php selected( $_REQUEST['prov'], 'na' ) ?> value="na">Napoli</option>
	<option <?php selected( $_REQUEST['prov'], 'no' ) ?> value="no">Novara</option>
	<option <?php selected( $_REQUEST['prov'], 'nu' ) ?> value="nu">Nuoro</option>
	<option <?php selected( $_REQUEST['prov'], 'og' ) ?> value="og">Ogliastra</option>
	<option <?php selected( $_REQUEST['prov'], 'ot' ) ?> value="ot">Olbia-Tempio</option>
	<option <?php selected( $_REQUEST['prov'], 'or' ) ?> value="or">Oristano</option>
	<option <?php selected( $_REQUEST['prov'], 'pd' ) ?> value="pd">Padova</option>
	<option <?php selected( $_REQUEST['prov'], 'pa' ) ?> value="pa">Palermo</option>
	<option <?php selected( $_REQUEST['prov'], 'pr' ) ?> value="pr">Parma</option>
	<option <?php selected( $_REQUEST['prov'], 'pv' ) ?> value="pv">Pavia</option>
	<option <?php selected( $_REQUEST['prov'], 'pg' ) ?> value="pg">Perugia</option>
	<option <?php selected( $_REQUEST['prov'], 'pu' ) ?> value="pu">Pesaro e Urbino</option>
	<option <?php selected( $_REQUEST['prov'], 'pe' ) ?> value="pe">Pescara</option>
	<option <?php selected( $_REQUEST['prov'], 'pc' ) ?> value="pc">Piacenza</option>
	<option <?php selected( $_REQUEST['prov'], 'pi' ) ?> value="pi">Pisa</option>
	<option <?php selected( $_REQUEST['prov'], 'pt' ) ?> value="pt">Pistoia</option>
	<option <?php selected( $_REQUEST['prov'], 'pn' ) ?> value="pn">Pordenone</option>
	<option <?php selected( $_REQUEST['prov'], 'pz' ) ?> value="pz">Potenza</option>
	<option <?php selected( $_REQUEST['prov'], 'po' ) ?> value="po">Prato</option>
	<option <?php selected( $_REQUEST['prov'], 'rg' ) ?> value="rg">Ragusa</option>
	<option <?php selected( $_REQUEST['prov'], 'ra' ) ?> value="ra">Ravenna</option>
	<option <?php selected( $_REQUEST['prov'], 'rc' ) ?> value="rc">Reggio di Calabria</option>
	<option <?php selected( $_REQUEST['prov'], 're' ) ?> value="re">Reggio nell'Emilia</option>
	<option <?php selected( $_REQUEST['prov'], 'ri' ) ?> value="ri">Rieti</option>
	<option <?php selected( $_REQUEST['prov'], 'rn' ) ?> value="rn">Rimini</option>
	<option <?php selected( $_REQUEST['prov'], 'rm' ) ?> value="rm">Roma</option>
	<option <?php selected( $_REQUEST['prov'], 'ro' ) ?> value="ro">Rovigo</option>
	<option <?php selected( $_REQUEST['prov'], 'sa' ) ?> value="sa">Salerno</option>
	<option <?php selected( $_REQUEST['prov'], 'ss' ) ?> value="ss">Sassari</option>
	<option <?php selected( $_REQUEST['prov'], 'sv' ) ?> value="sv">Savona</option>
	<option <?php selected( $_REQUEST['prov'], 'si' ) ?> value="si">Siena</option>
	<option <?php selected( $_REQUEST['prov'], 'sr' ) ?> value="sr">Siracusa</option>
	<option <?php selected( $_REQUEST['prov'], 'so' ) ?> value="so">Sondrio</option>
	<option <?php selected( $_REQUEST['prov'], 'ta' ) ?> value="ta">Taranto</option>
	<option <?php selected( $_REQUEST['prov'], 'te' ) ?> value="te">Teramo</option>
	<option <?php selected( $_REQUEST['prov'], 'tr' ) ?> value="tr">Terni</option>
	<option <?php selected( $_REQUEST['prov'], 'to' ) ?> value="to">Torino</option>
	<option <?php selected( $_REQUEST['prov'], 'tp' ) ?> value="tp">Trapani</option>
	<option <?php selected( $_REQUEST['prov'], 'tn' ) ?> value="tn">Trento</option>
	<option <?php selected( $_REQUEST['prov'], 'tv' ) ?> value="tv">Treviso</option>
	<option <?php selected( $_REQUEST['prov'], 'ts' ) ?> value="ts">Trieste</option>
	<option <?php selected( $_REQUEST['prov'], 'ud' ) ?> value="ud">Udine</option>
	<option <?php selected( $_REQUEST['prov'], 'va' ) ?> value="va">Varese</option>
	<option <?php selected( $_REQUEST['prov'], 've' ) ?> value="ve">Venezia</option>
	<option <?php selected( $_REQUEST['prov'], 'vb' ) ?> value="vb">Verbano-Cusio-Ossola</option>
	<option <?php selected( $_REQUEST['prov'], 'vr' ) ?> value="vr">Vercelli</option>
	<option <?php selected( $_REQUEST['prov'], 'vr' ) ?> value="vr">Verona</option>
	<option <?php selected( $_REQUEST['prov'], 'vv' ) ?> value="vv">Vibo valentia</option>
	<option <?php selected( $_REQUEST['prov'], 'vi' ) ?> value="vi">Vicenza</option>
	<option <?php selected( $_REQUEST['prov'], 'vt' ) ?> value="vt">Viterbo</option>
</select>

Sicurezza WordPress: disabilitare l’editor dei temi e plugin

Recentemente ho notato, presso alcuni clienti, diversi tentativi di compromettere le installazioni di WordPress, con lo scopo di iniettare codice malevolo da distribuire ad incauti visitatori del sito. Decidere di usare WordPress è sicuramente un ottima scelta per la maturità del progetto, il numero plugin a disposizione, la flessibilità e la vasta comunità di supporto, ma si è oggetto nel contempo ad attacchi di vario genere. Uno dei più gettonati è sicuramente l’utilizzo dell’editor dei temi e dei plugin per modificare il file function.php del tema in uso. Continue reading

Convalida HTML5 del link della categoria in WordPress

In questi giorni, sfruttando i giorni di festa e qualche ora libera in più, sto mettendo mano al tema di questo sito internet. Tra le varie cose da fare, ho deciso di aggiornarlo ad HTML5 con microdati. Un problema riscontrato è stato l’attributo rel=”category tag” che viene aggiunto nei link utilizzando le funzioni per le categorie di WordPress. Questo attributo causa un errore di convalida con lo strumento del W3C validator.w3.org

Bad value category tag for attribute rel on element a: Keyword category is not registered

Si tratta di un problema di WordPress. Il valore category non è tra quelli previsti dalle raccomandazioni W3C, mentre il valore tag è corretto in quanto è stato recentemente aggiunto tramite Microformats.

wordpress-logo-hoz-rgb

Continue reading

Aggiungere nel tema di WordPress un link per creare articoli e pagine

Come per il famoso link “Edit this”, tradotto normalmente in “Modifica”, può essere comodo inserire nel proprio tema un link per scrivere un nuovo articolo o una nuova pagina.

Per quanto riguarda gli articoli la soluzione è semplice, e si risolve con qualche linea di codice.

if(current_user_can('publish_posts'))
  echo '<a href="'.get_bloginfo('wpurl').'/wp-admin/post-new.php">'.__('Write article').'</a>';

Per quanto riguarda invece le pagine, può essere interessante utilizzare un codice più complesso, per aggiungere una nuova pagina che abbia la corrente come pagina madre. Per fare ciò è necessario creare una pagina vuota utilizzando la funzione wp_insert_post, passando il parametro post_parent che deve corrispondere all’ID della pagina corrente, quindi redirigere l’utente al back-end.

if(current_user_can('publish_pages'))
{
  $post_parent = $post->ID;
  if($_GET['publish_subpage'])
  {
    $newpost = array(
      'post_content' => '<p>&nbsp;</p>',
      'post_parent' => $post_parent,
      'post_status' => 'draft',
      'post_title' => '',
      'post_type' => 'page'
    );
    $newpost_ID = wp_insert_post($newpost);
    if($newpost_ID)
      header('Location: '.get_bloginfo('wpurl').'/wp-admin/page.php?action=edit&post='.$newpost_ID);
    else header('Location: '.get_permalink($post->ID));
  }
  else
  {
    $publish_link = get_permalink($post->ID);
    if(strpos('?', $publish_link))
      echo '<a href="'.$publish_link.'&amp;publish_subpage=yes">'.__('Write page').'</a>';
    else echo '<a href="'.$publish_link.'?publish_subpage=yes">'.__('Write page').'</a>';
  }
}

Questa soluzione prevede la creazione di un link che richiama la stessa pagina con in aggiunta il parametro publish_subpage=yes.

Posted in PHP

Installare WP-Cache su Windows e IIS

WP-Cache è un ottimo plug-in per velocizzare WordPress, effettuando la cache delle pagine già servite in precedenza. Purtroppo non è ben progettato per IIS: dopo averlo installato, la pagina di amministrazione risulterà bianca, quando invece dovrebbe auto-configurarsi e mostrare delle opzioni.

Per renderlo funzionante su Windows ed in particolare IIS, è necessario effettuare alcune modifiche ai sorgenti e successivamente procedere alla configurazione manuale.

Modifiche ai sorgenti

Nel file /wp-content/plugins/wp-cache/wp-cache.php, dalla riga 491, la funzione wp_cache_check_link utilizza dei link simbolici.

function wp_cache_check_link() {
global $wp_cache_link, $wp_cache_file;

if ( basename(@readlink($wp_cache_link)) != basename($wp_cache_file)) {
@unlink($wp_cache_link);
if (!@symlink ($wp_cache_file, $wp_cache_link)) {
echo "<code>advanced-cache.php</code> link does not exist<br />";
echo "Create it by executing: <br /><code>ln -s $wp_cache_file $wp_cache_link</code><br /> in your server<br />";
return false;
}
}
return true;
}

I link simbolici non sono implementati in Windows, e vanno quindi rimosse le funzioni symlink e readlink. Consiglio di effettuare un semplice controllo sull’esistenza del file advanced-cache.php.

function wp_cache_check_link() {
global $wp_cache_link, $wp_cache_file;

if(!file_exists($wp_cache_link))
{
echo "<code>advanced-cache.php</code> link does not exist<br />";
echo "Create it by executing: <br /><code>ln -s $wp_cache_file $wp_cache_link</code><br /> in your server<br />";
return false;
}
return true;
}

Sempre nello stesso file, si utilizza la costante __FILE__

add_options_page('WP-Cache Manager', 'WP-Cache', 5, __FILE__, 'wp_cache_manager');

Questo può causare alcuni problemi con le barre rovesce dei percorsi, per cui consiglio di fornire solo il nome del file, dato che WordPress è in grado di ricostruire comunque il percorso corretto del plug-in.

add_options_page('WP-Cache Manager', 'WP-Cache', 5, basename(__FILE__), 'wp_cache_manager');

Nel file /wp-content/plugins/wp-cache/wp-cache-phase1.php, alla riga 23, si fa uso della variabile $_SERVER['REQUEST_URI'] che purtroppo in Windows contiene solo parte del permalink.

$key = md5($_SERVER['SERVER_NAME'].preg_replace('/#.*$/', '', $_SERVER['REQUEST_URI']).wp_cache_get_cookies_values());

Il valore corretto lo otteniamo concatenando $_SERVER['SCRIPT_NAME'] e $_SERVER['PATH_INFO']

$key = md5($_SERVER['SERVER_NAME'].preg_replace('/#.*$/', '', $_SERVER['SCRIPT_NAME'].$_SERVER['PATH_INFO']).wp_cache_get_cookies_values());

Per lo stesso motivo è da sistemare il file /wp-content/plugins/wp-cache/wp-cache.php, sostituendo tutte le occorrenze di $_SERVER['REQUEST_URI'].

echo '

';

In questo caso utilizziamo una soluzione standard, usata anche in altri plug-in, per indicare la pagina corrente.

echo '

';

L’operazione deve essere ripetuta su tutto il file, alle righe 253, 272, 305, 329, 351, 556, 590, 605 e 613.

Configurazione manuale

Dopo aver eseguito le modifiche ai sorgenti, è possibile procedere alla configurazione del plug-in

  • Copiare rinominandolo il file /wp-content/plugins/wp-cache/wp-cache-phase1.php in /wp-content/advanced-cache.php
  • Creare la cartella /wp-content/plugins/cache
  • Concedere i diritti di scrittura a IIS alla cartella /wp-content. Dopo la configurazione, sono sufficienti i permessi per la cartella /wp-content/plugins/cache e /wp-content/plugins/wp-cache ed il file /wp-content/wp-cache-config.php.
  • Modificare il file wp-config.php aggiungendo una costante
    define('WP_CACHE', true);

A questo punto, per far entrare in funzione il plug-in, non resta che accedere alla pagina di amministrazione, dove dovrebbero essere comparse tutte le opzioni di configurazione, ed attivare la cache con l’apposito pulsante.

Fonti di riferimento