Introduzione a PHP per gli utenti di WordPress

Introduzione a PHP per gli utenti di WordPress

WordPress è scritto in PHP. Sembra un'affermazione banale e scontata per noi sviluppatori, ma non lo è affatto per tutti gli altri utenti di questo CMS. Troppo spesso gli utenti di WordPress non riescono ad ottenere quello che vogliono dal CMS perchè non riescono a capire come far funzionare il codice PHP di WordPress. Questo articolo vuole essere una semplice introduzione ai concetti fondamentali del codice PHP di WordPress.

Blocchi PHP e blocchi HTML

Il codice delle pagine dei temi e plugin di WordPress è un mix di PHP e HTML. I blocchi PHP sono delimitati in questo modo:


<?php // codice PHP ?>

ossia da un tag PHP di apertura (<?php) e da un tag PHP di chiusura (?>). Ricordate sempre che tutto ciò che si trova all'interno di questi tag viene elaborato dall'interprete PHP ed è proprio qui che possono verificarsi quegli errori PHP (come Warning e Fatal Error) che buttano giù il vostro sito. Quindi cautela!

Invece i blocchi HTML non generano errori fatali, ma occorre lo stesso prestarvi attenzione per evitare che la pagina venga resa in modo errato. Ecco come si presentano i due tipi di blocchi insieme:


<div id="tweet">
	<?php echo create_tweet_button(); ?>
</div>

In questo caso l'elemento HTML con ID tweet è un contenitore per l'output generato dal codice PHP. Se volete modificare il contenitore, è sufficiente modificare l'elemento corrispondente. Viceversa, se volete modificare l'output PHP dovete operare sulla funzione create_tweet_button(). In altre parole, anche se PHP e HTML sono uniti insieme, per effettuare delle modifiche dovete operare su ciascun blocco in modo separato.

Commenti PHP

I commenti PHP si dividono in due categorie:

  1. Commenti su una sola riga (preceduti da // o #)
  2. Commenti su più righe (delimitati da /* e */)

Esempi:


// Su una riga

/* Su
   più
   righe */

Tutto ciò che si trova all'interno dei commenti PHP non viene eseguito dall'interprete PHP. I commenti sono un ottimo strumento per il debugging, perchè ci consentono di eliminare dei blocchi di codice senza cancellarli dal file:


<?php echo create_new_tweet_button(); //create_tweet_button();?>

In questo caso la vecchia funzione è stata commentata, quindi non verrà eseguita. Ma se la nuova funzione dovesse creare dei problemi, possiamo sempre tornare alla versione precedente.

Punti e virgola

Non immaginate quanti errori vengono causati da un punto e virgola mancante in PHP! In generale, tenete presente che tutte le asserzioni PHP devono avere un punto e virgola finale:


$variabile = 'Test'; // notate il ;
$array = array(); // notate il ;

function count_posts() {
    $count_posts = wp_count_posts(); // notate il ;

    $published_posts = $count_posts->publish;  // notate il ;

    return '<p class="posts-no"><span>' . $published_posts . ' articoli pubblicati' . '</span></p>'; // notate il ;
}

echo count_posts(); // notate il ;

I blocchi di controllo del flusso del codice non necessitano del punto e virgola:


if (function_exists('add_theme_support')) {
    add_theme_support('post-thumbnails');
    add_image_size('index-categories', 190, 150, true);
} // senza il ;

Stringhe e echo

echo è un costrutto PHP che, come lascia intuire il suo nome, stampa e visualizza un output sulla pagina. In WordPress questo costrutto viene usato spesso per scrivere l'output HTML generato da PHP.

Si usa spesso echo quando una funzione PHP restituisce un valore (tramite return) ma non lo visualizza:


function count_posts() {
    $count_posts = wp_count_posts();

    $published_posts = $count_posts->publish;

    return '<p class="posts-no"><span>' . $published_posts . ' articoli pubblicati' . '</span></p>';
}

echo count_posts();

In questo caso echo visualizzerà (ipoteticamente) la seguente marcatura:


<p class="post-no">
	<span>100 articoli pubblicati</span>
</p>

Avrete notato che in PHP le stringhe di caratteri possono essere racchiuse tra:

  1. Virgolette singole (')
  2. Virgolette doppie (")

Esempi:


$stringa1 = 'Test';
$stringa2 = "Test";

Se usate tag HTML racchiusi in stringhe avrete notato che PHP tratta le virgolette annidate in modo rigoroso: esse infatti devono essere sempre appaiate. Quindi il seguente esempio è corretto:


$html = '<div id="test"></div>';

perchè abbiamo la combinazione singole/doppie, ma il seguente:


$html = "<div id="test"></div>";

è errato, perchè abbiamo doppie/doppie. Se vogliamo usare le virgolette doppie anche all'interno della stringa dobbiamo usare il backslash:


$html = "<div id=\"test\"></div>";

La concatenazione delle stringhe avviene tramite l'operatore punto (.):


$str1 = 'Hello';
$str2 = ' world';
$str3 = $str1 . $str2;

echo $str3; //Hello world

L'operatore punto può anche essere usato in modo incrementale come .=:


$html = '<div>';

foreach($results as $result) {

	$html.= '<p>' . $result . '</p>';


}
$html .= '</div>';

echo $html;

Supponendo che l'array $results sia composto da tre voci contenenti ciascuna un numero avremo il seguente output:


<div>
	<p>1</p>
	<p>2</p>
	<p>3</p>
</div>

Funzioni

In un tema di WordPress, le funzioni vengono definite all'interno del file functions.php. Una funzione viene definita come segue:


function nome_funzione(argomenti) {

	// corpo della funzione

}

Una volta definita, la funzione è disponibile su tutti i file e le sezioni del vostro tema:


<?php nome_funzione();?>

argomenti è una lista (se gli argomenti sono più d'uno) separata da virgole di variabili usate come argomenti della funzione:


function remove_excerpt_link ($text) {
   return preg_replace('/<a href=\"([^\"]*)\">(.*)<\/a>/', '',  $text);
 }
add_filter('the_excerpt', 'remove_excerpt_link');

In questo caso $text è l'argomento della funzione. PHP vi consente anche di definire dei valori predefiniti per gli argomenti:


function get_latest_tweet($username='gabromanato', $limit=5) {

	//...

}

Riferimenti

  1. Guida PHP di base (Html.it)
  2. Guida PHP pratica (Html.it)
  3. Guida PHP teorica (Html.it)
Torna su