WordPress: come aggiungere un’area widget personalizzata

Wordpress widget

In questo articolo vediamo come inserire un’area widget personalizzata in un tema WordPress.

Per prima cosa è assolutamente consigliabile creare un tema figlio (vedi: WordPress: cosa è un tema figlio (child theme) e perché utilizzarlo

Successivamente scriviamo queste righe di codice nel file functions.php per registrare la nostra nuova area widget. In questo esempio vogliamo creare un’area widget che sia disponibile sulla home page del sito (o sulla front page) utilizzando un tema figlio del template standard di WordPress: Twentytwenty.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
function new_widget_func() {
	register_sidebar(
		array(
			"name" => "Widget home centrale",
			"description" => "Widget nella home in posizione centrale",
			"id" => "widget-home-centrale",
			"before_widget" => "<div class='widget-home-centrale'>",
			"after_widget" => "</div>",
			"before_title" => "<h2>",
			"after_title" => "</h2>"
		)
	);
}
add_action( "widgets_init", "new_widget_func");
?>

Dove:

name = corrisponde al titolo dell'area widget che compare nel backoffice in Aspetto->Widget,
description = corrisponde alla descrizione del widget che compare nel backoffice in Aspetto->Widget,
id = identificativo univoco del widget, deve essere valorizzato come fosse uno slug (senza spazi, lettere accentate, ecc)
before_widget = il codice HTML che precede il widget
after_widget = il codice HTML che segue il widget
before_title = il codice HTML che precede il titolo del widget
after_title = il codice HTML che segue il titolo del widget

Fin qui abbiamo creato e inizializzato l’area, ora dobbiamo mostrarla nel frontend.
Per visualizzarla nella home utilizzando Twentytwenty dobbiamo andare a modificare il file index.php e copiarlo nella directory del nostro tema figlio.
Per posizionarla all’inizio della pagina subito sotto all’header, inseriremo questo codice:

1
2
3
4
5
6
7
8
<?php if(is_home() || is_front_page()): ?>
	<?php if( is_active_sidebar('widget-home-centrale')): ?>
		<div class="custom-widget-container">
			<?php dynamic_sidebar('widget-home-centrale'); ?>
		</div>
	<?php endif; ?>
 
<?php endif; ?>

subito prima di

<main id="site-content" role="main">

Abbiamo finito, ora non rimane che aggiungere un po’ di regole CSS. Per questo motivo abbiamo inserito l’area widget in un div contrassegnato con una classe custom-widget-container che possiamo utilizzare per adattare il layout alla pagina, infine abbiamo la possibilità di dare uno stile personalizzato al nostro widget utilizzando la classe CSS: widget-home-centrale che abbiamo precedentemente definito.

Ecco come viene in pratica:
Prova area widget wordpress

WordPress: un widget per mostrare le miniature di una galleria di foto nella sidebar

Wordpress: un widget per mostrare le miniature di una galleriaQuesto widget è veramente semplicissimo, serve a mostrare in un riquadro le miniature (thumbnails) 64×64 pixel di una qualsiasi galleria di foto (photogallery) nativa di WordPress. L’installazione è immediata, basta includere nel file “functions.php” del tema attivo, il file con il codice che illustrerò qui sotto. Nell’area Aspetto -> widget sarà disponibile il widget: “MS Gallery Thumbs Widget”, è sufficiente trascinarlo nell’area dove lo si desidera posizionare e impostare nell’ordine:

Leggi tutto

PHP: una classe client universale che utilizza cURL per interrogare Web service attraverso XML

Webservice e cURL I Web service sono strumenti che permettono di scambiare messaggi fra client e server in una rete distribuita, indipendentemente dal linguaggio di programmazione utilizzato. I più diffusi linguaggi per la programmazione web mettono a disposizioni classi e funzioni per la loro implementazione che avviene utilizzando il protocollo SOAP (Simple Object Access Protocol).

Normalmente l’esposizione delle funzioni server avviene attraverso un documento XML che si chiama WSDL (Web Services Description Language). Secondo quanto descritto nel WSDL associato al servizio è possibile interrogare il server attraverso richieste incapsulate in un documento XML e fatte viaggiare attraverso il protocollo HTTP mediante una richiesta di tipo POST.

Leggi tutto

WordPress: un plugin per caricare video YouTube in modo veloce, leggero e responsive

YouTube video player in WordPress
YouTube video player in WordPress

Elaborando i concetti espressi in questo articolo: “Come inserire un video YouTube in una pagina web in modalità responsive e leggera”  che ho scritto per il Blog della Cooperativa Elzevira, ho pensato che potesse essere utile proporre questa modalità di caricamento dei video di YouTube anche con un plugin per WordPress.

In pratica si tratta di caricare i video di YouTube senza pre-caricare il player, in modo di velocizzare in maniera drastica il caricamento della pagina. Viene caricata solo l’immagine di copertina del video e viene sovrapposto il simbolo “play” del video. Questa operazione si rivela particolarmente utile quando i video nella pagina sono parecchi.

Solo al momento del click sul simbolo “play” viene caricato il player e mostrati eventualmente i controlli e le altre informazioni.

Leggi tutto

Geolocalizzazione di indirizzi (geocoding) con PHP o jQuery e Nominatim di OpenStreetMap

Geolocalizzare
Geolocalizzare

La definizione di geolocalizzazione è ben descritta su Wikipedia:

La geolocalizzazione è l’identificazione della posizione geografica nel mondo reale di un dato oggetto, come ad esempio un telefono cellulare o un computer connesso o meno ad Internet, secondo varie possibili tecniche.

Dunque, si tratta di convertire in coordinate geografiche un dato oggetto, che più frequentemente è un indirizzo di un edificio o di un terreno, ecc. E’ anche possibile ottenere le coordinate di un comune o di una qualsiasi località. Mediante l’azione inversa (reverse geocoding) è invece possibile determinare la toponomastica dalle coordinate geografiche.

Leggi tutto

PHP: multi-process socket TCP per acquisire dati dal GPS Tracker GPS-102 compatibile OpenGTS

multi-process php socket
multi-process php socket

Nei precedenti articoli “PHP: un socket TCP per acquisire dati dal GPS Tracker GPS-102 compatibile OpenGTS” (prima, seconda e terza parte), ho descritto come implementare un socket TCP in PHP per acquisire i dati GPS da un tracker di tipo TK-102 (e compatibili).

Lo script però era progettato per singolo processo, cioè non poteva servire più di una connessione alla volta e non era dunque in grado di gestire connessioni concorrenti.

E’ invece molto utile che un socket server di questo tipo sia in grado di gestire connessioni concorrenti in modo da prendere in carico più GPS tracker contemporaneamente. Fortunatamente il linguaggio PHP supporta la programmazione multi-processo attraverso l’utilizzo di fork(). In questo modo il processo padre chiamato in causa da una nuova connessione genera un processo figlio che condivide le variabili e le risorse e rimane libero di accettare nuove connessioni.

Leggi tutto