際際滷

際際滷Share a Scribd company logo
RODOLFO MELOGLI 息2021
Da zero a PHP
RODOLFO MELOGLI 息2021
Da zero a PHP...
 Se conosci un minimo di HTML (<div> <p> <ul> <li> <img>
<a> <h1> <h2> <h3> <span>) 竪 un peccato non saper giocare
in PHP (80% web, 100% WP)
 PHP = "PHP: Hypertext Preprocessor"
(https://www.php.net); in poche parole, PHP genera pagine
web dinamicamente (ovvero HTML!). E non solo.
2
RODOLFO MELOGLI 息2021
Da zero a PHP...
 WP core, temi, plugin sono sviluppati in PHP. Se lo
conosci... li customizzi. Bastano spesso 4 righe di
codice per modi鍖care/aggiungere qualcosa
 Prima di considerare l'installazione di yet another
plugin, vedi se qualche riga di PHP pu嘆 bastare :)
3
RODOLFO MELOGLI 息2021
ZERO: le basi
4
RODOLFO MELOGLI 息2021
Differenza tra HTML "manuale" e
HTML generato da PHP
息 2011-2020 ACME INC.
息 2011-<?php echo date( 'Y' ); ?> ACME INC.
5
RODOLFO MELOGLI 息2021
Cosa fa PHP
 Genera HTML dinamico (date('Y') per esempio)
 Salva dati inseriti in un <form>
 Parla/scrive col/sul DB
 Parla/scrive con/su 鍖le
 Salva/legge cookies
 E molto altro
6
RODOLFO MELOGLI 息2021
Sintassi
<?php echo date( 'Y' ); ?>
 PHP script 竪 delimitato dai tag di apertura/chiusura
 PHP statement 鍖niscono col ;
 PHP function date() ecc.
 PHP viene scritto in un 鍖le .php (functions.php per esempio)
7
RODOLFO MELOGLI 息2021
Prepararsi a scrivere in PHP
 Hosting con PHP installato (tutti praticamente!)
 Dominio
 SW: Code editor es. NotePad++
 SW: FTP es. FileZilla
 (sito WordPress)
8
RODOLFO MELOGLI 息2021
Il nostro primo 鍖le .php (+ HTML)
9
RODOLFO MELOGLI 息2021 10
RODOLFO MELOGLI 息2021
UNO: variabili
11
RODOLFO MELOGLI 息2021
Sintassi
<?php $totale = 59; ?>
In questo statement de鍖nisco la variabile ($) $totale e gli
assegno il numero 59 e ne de鍖nisco il tipo (integer)
<?php $totale = "59"; ?>
?
12
RODOLFO MELOGLI 息2021
Sintassi
<?php $totale = 0; ?>
 nome variabile inizia con lettera oppure "_"
 solo (A-z, 0-9, _ )
 case-sensitive: $Totale != $totale
13
RODOLFO MELOGLI 息2021
Tipi di variabile
<?php
$totale = 0; // integer
$totale = "n/a"; // string
$totale = 5.39; // 鍖oat
$totale = array( 0, 1, 2, 7, 19 ); // array
$totale = false; // boolean
?>
14
RODOLFO MELOGLI 息2021
Operatori
<?php
$totale = $x + $y;
$totale = $x * $y;
$totale = $x / $y;
$totale = $x . 'kg';
?>
15
<?php
$x == $y // uguale
$x === $y // uguale + tipo
$x != $y // diverso
$x >= $y // maggiore uguale
?>
RODOLFO MELOGLI 息2021
if else elseif Statement
<?php
if ( $totale == 0 ) {
echo 'Nulla';
} elseif ( $totale >= 100 ) {
echo 'Complimenti';
} else {
echo 'Congratulazioni!';
}
?>
16
RODOLFO MELOGLI 息2021
foreach Statement
<?php
$frutta = array( 'banana', 'fragola', 'mela' );
foreach ( $frutta as $frutto ) {
echo '<p>Oggi mangia la ' . $frutto . '</p>';
}
?>
17
RODOLFO MELOGLI 息2021 18
RODOLFO MELOGLI 息2021
DUE: funzioni
19
RODOLFO MELOGLI 息2021
PHP functions
 1000+ built-in functions es. date() strlen()
 funzioni custom
20
RODOLFO MELOGLI 息2021
Sintassi
<?php
function hello() {
echo 'Ciao!';
}
hello(); // chiama
?>
 nome funzione inizia con lettera oppure "_". Unico
 non 竪 case-sensitive: HELLO();
21
RODOLFO MELOGLI 息2021
Argomenti
<?php
function hello( $name ) {
echo 'Ciao ' . $name . '!';
}
hello( 'Rodolfo' ); // chiama con argomento
?>
 si possono passare informazioni alla funzione

22
RODOLFO MELOGLI 息2021
Argomenti
<?php
function hello( $name = 'Pinco' ) {
echo 'Ciao ' . $name . '!';
}
hello( 'Rodolfo' ); // chiama con argomento
?>
 si possono passare informazioni alla funzione
 valore di default: in caso di assenza di argomento
23
RODOLFO MELOGLI 息2021
Echo vs Return
<?php
echo 'Ciao,'; // stampa Ciao,
function nome_cognome( $nome, $cognome ) {
return $nome . ' ' . $cognome;
}
nome_cognome( "Rodolfo", "Melogli" ); // non stampa
?>
 echo = stampa; return = restituisci (no stampa)
24
RODOLFO MELOGLI 息2021
Quindi a che serve Return?
<?php
function nome_cognome( $nome, $cognome ) {
if ( $nome == "" || $cognome == "" ) return 'n/a';
return $nome . ' ' . $cognome;
}
?>
 uscire presto dalla funzione
25
RODOLFO MELOGLI 息2021
Quindi a che serve Return?
<?php
function nome_cognome( $nome, $cognome ) {
if ( $nome == "" || $cognome == "" ) return 'n/a';
return $nome . ' ' . $cognome;
}
if ( nome_cognome( "Rodolfo", "" ) == 'n/a' ) {
echo 'Hey, manca qualcosa!';
}
?>
 uscire presto dalla funzione / manipolare di nuovo
26
RODOLFO MELOGLI 息2021
TRE: PHP<>WP
27
RODOLFO MELOGLI 息2021
PHP in WP
 Core, theme, plugin 鍖le sono quasi tutti .php
 Inoltre, WP de鍖nisce anche le sue funzioni PHP:
get_header() the_title() the_content() ecc.
 Custom PHP si pu嘆 inserire nel child theme per
personalizzare WP/theme/plugin
28
RODOLFO MELOGLI 息2021
WP Hooks
 Sito WP 竪 un assemblaggio di funzioni PHP che poi
restituiscono il risultato nel browser (header, contenuto,
sidebar, footer)
 Durante questo assemblaggio, puoi "stoppare" il
processo, "agganciare" la tua funzione, e farlo ripartire
SENZA modi鍖care i 鍖le WP/theme/plugin
29
RODOLFO MELOGLI 息2021
WP Hooks - Esempio "wp_head"
<?php
add_action( 'wp_head', 'googleanalytics' );
function googleanalytics() {
echo '<script>codice qui</script>';
}
?>
 mentre WP assemblava l'header, ho "agganciato" il
mio script chiamando la mia funzione custom
30
RODOLFO MELOGLI 息2021
WP Hooks - Esempio "the_content"
<?php
add_鍖lter( 'the_content', 'concatena_banner' );
function concatena_banner( $content ) {
$content = $content . '<img src=/BusinessBloomer/wordcamp-italia-2021-da-zero-a-php/"bann.jpg">&
return $content;
}
?>
 mentre WP assemblava il contenuto, ho "agganciato"
il banner chiamando la mia funzione custom
31
RODOLFO MELOGLI 息2021
WP Hooks: add_action add_鍖lter
 add_action ti permette di agganciarti a una do_action
per aggiungere qualcosa (contenuto, un'azione, ecc.)
 add_鍖lter ti permette di agganciarti a un apply_鍖lters
per manipolare qualcosa (es. array di categorie)
32
RODOLFO MELOGLI 息2021
Un plugin ben sviluppato ti offre:
 una marea di do_action per aggiungere
personalizzazioni tramite functions.php
 una marea di apply_鍖lters per intercettare le sue
funzioni e manipolarle tramite functions.php
 altrimenti devi modi鍖care i core 鍖les (big NO)
33
RODOLFO MELOGLI 息2021
Caso Studio 1: prefooter
 su tutte le pagine WP si desidera aggiungere una
sezione "prefooter" con un banner
 vado a cercarmi l'hook di WP che corrisponde al
momento in cui assembla il footer
 mi "aggancio" e faccio caricare prima la mia funzione
custom
34
RODOLFO MELOGLI 息2021
Caso Studio 1: prefooter
<?php
add_action( 'get_footer', 'prefooter', 1 );
function prefooter() {
echo '<img src=/BusinessBloomer/wordcamp-italia-2021-da-zero-a-php/"header-banner.jpg">&
}
?>
35
priority
RODOLFO MELOGLI 息2021 36
RODOLFO MELOGLI 息2021
Caso Studio 2: rimuovere WC tabs
 WooCommerce "aggiunge" i single product tabs con
un suo hook: add_action( 'woocommerce_after_single_product_summary',
'woocommerce_output_product_data_tabs', 10 );
 tramite PHP vogliamo rimuoverlo
 businessbloomer.com/woocommerce-visual-hook-gui
de-single-product-page per lista hooks
37
RODOLFO MELOGLI 息2021
Caso Studio 2: rimuovere WC tabs
<?php
remove_action(
'woocommerce_after_single_product_summary',
'woocommerce_output_product_data_tabs', 10 );
?>
38
unica differenza
RODOLFO MELOGLI 息2021
Caso Studio 3: SEO
<?php
function home_meta_description() {
if ( is_home() ) {
echo '<meta name="description" content="Il
WordCamp Italia 竪 un evento online organizzato dalla
community italiana di WordPress">';
}
}
add_action( 'wp_head', 'home_meta_description');
?>
39
RODOLFO MELOGLI 息2021
Da zero a PHP
40
RODOLFO MELOGLI 息2021
Recap
 Potremmo fare un WordCamp intero a riguardo
 In questi minuti hai imparato a scrivere in PHP, creare
funzioni e manipolare un sito WP
 Ora sta a te continuare con lo studio e la pratica. Se in
15 minuti abbiamo fatto tutto questo, chiss in 100
ore cosa si pu嘆 ottenere!
41
RODOLFO MELOGLI 息2021
Grazie!
Domande?

More Related Content

WordCamp Italia 2021: da zero a PHP

  • 2. RODOLFO MELOGLI 息2021 Da zero a PHP... Se conosci un minimo di HTML (<div> <p> <ul> <li> <img> <a> <h1> <h2> <h3> <span>) 竪 un peccato non saper giocare in PHP (80% web, 100% WP) PHP = "PHP: Hypertext Preprocessor" (https://www.php.net); in poche parole, PHP genera pagine web dinamicamente (ovvero HTML!). E non solo. 2
  • 3. RODOLFO MELOGLI 息2021 Da zero a PHP... WP core, temi, plugin sono sviluppati in PHP. Se lo conosci... li customizzi. Bastano spesso 4 righe di codice per modi鍖care/aggiungere qualcosa Prima di considerare l'installazione di yet another plugin, vedi se qualche riga di PHP pu嘆 bastare :) 3
  • 5. RODOLFO MELOGLI 息2021 Differenza tra HTML "manuale" e HTML generato da PHP 息 2011-2020 ACME INC. 息 2011-<?php echo date( 'Y' ); ?> ACME INC. 5
  • 6. RODOLFO MELOGLI 息2021 Cosa fa PHP Genera HTML dinamico (date('Y') per esempio) Salva dati inseriti in un <form> Parla/scrive col/sul DB Parla/scrive con/su 鍖le Salva/legge cookies E molto altro 6
  • 7. RODOLFO MELOGLI 息2021 Sintassi <?php echo date( 'Y' ); ?> PHP script 竪 delimitato dai tag di apertura/chiusura PHP statement 鍖niscono col ; PHP function date() ecc. PHP viene scritto in un 鍖le .php (functions.php per esempio) 7
  • 8. RODOLFO MELOGLI 息2021 Prepararsi a scrivere in PHP Hosting con PHP installato (tutti praticamente!) Dominio SW: Code editor es. NotePad++ SW: FTP es. FileZilla (sito WordPress) 8
  • 9. RODOLFO MELOGLI 息2021 Il nostro primo 鍖le .php (+ HTML) 9
  • 12. RODOLFO MELOGLI 息2021 Sintassi <?php $totale = 59; ?> In questo statement de鍖nisco la variabile ($) $totale e gli assegno il numero 59 e ne de鍖nisco il tipo (integer) <?php $totale = "59"; ?> ? 12
  • 13. RODOLFO MELOGLI 息2021 Sintassi <?php $totale = 0; ?> nome variabile inizia con lettera oppure "_" solo (A-z, 0-9, _ ) case-sensitive: $Totale != $totale 13
  • 14. RODOLFO MELOGLI 息2021 Tipi di variabile <?php $totale = 0; // integer $totale = "n/a"; // string $totale = 5.39; // 鍖oat $totale = array( 0, 1, 2, 7, 19 ); // array $totale = false; // boolean ?> 14
  • 15. RODOLFO MELOGLI 息2021 Operatori <?php $totale = $x + $y; $totale = $x * $y; $totale = $x / $y; $totale = $x . 'kg'; ?> 15 <?php $x == $y // uguale $x === $y // uguale + tipo $x != $y // diverso $x >= $y // maggiore uguale ?>
  • 16. RODOLFO MELOGLI 息2021 if else elseif Statement <?php if ( $totale == 0 ) { echo 'Nulla'; } elseif ( $totale >= 100 ) { echo 'Complimenti'; } else { echo 'Congratulazioni!'; } ?> 16
  • 17. RODOLFO MELOGLI 息2021 foreach Statement <?php $frutta = array( 'banana', 'fragola', 'mela' ); foreach ( $frutta as $frutto ) { echo '<p>Oggi mangia la ' . $frutto . '</p>'; } ?> 17
  • 20. RODOLFO MELOGLI 息2021 PHP functions 1000+ built-in functions es. date() strlen() funzioni custom 20
  • 21. RODOLFO MELOGLI 息2021 Sintassi <?php function hello() { echo 'Ciao!'; } hello(); // chiama ?> nome funzione inizia con lettera oppure "_". Unico non 竪 case-sensitive: HELLO(); 21
  • 22. RODOLFO MELOGLI 息2021 Argomenti <?php function hello( $name ) { echo 'Ciao ' . $name . '!'; } hello( 'Rodolfo' ); // chiama con argomento ?> si possono passare informazioni alla funzione 22
  • 23. RODOLFO MELOGLI 息2021 Argomenti <?php function hello( $name = 'Pinco' ) { echo 'Ciao ' . $name . '!'; } hello( 'Rodolfo' ); // chiama con argomento ?> si possono passare informazioni alla funzione valore di default: in caso di assenza di argomento 23
  • 24. RODOLFO MELOGLI 息2021 Echo vs Return <?php echo 'Ciao,'; // stampa Ciao, function nome_cognome( $nome, $cognome ) { return $nome . ' ' . $cognome; } nome_cognome( "Rodolfo", "Melogli" ); // non stampa ?> echo = stampa; return = restituisci (no stampa) 24
  • 25. RODOLFO MELOGLI 息2021 Quindi a che serve Return? <?php function nome_cognome( $nome, $cognome ) { if ( $nome == "" || $cognome == "" ) return 'n/a'; return $nome . ' ' . $cognome; } ?> uscire presto dalla funzione 25
  • 26. RODOLFO MELOGLI 息2021 Quindi a che serve Return? <?php function nome_cognome( $nome, $cognome ) { if ( $nome == "" || $cognome == "" ) return 'n/a'; return $nome . ' ' . $cognome; } if ( nome_cognome( "Rodolfo", "" ) == 'n/a' ) { echo 'Hey, manca qualcosa!'; } ?> uscire presto dalla funzione / manipolare di nuovo 26
  • 28. RODOLFO MELOGLI 息2021 PHP in WP Core, theme, plugin 鍖le sono quasi tutti .php Inoltre, WP de鍖nisce anche le sue funzioni PHP: get_header() the_title() the_content() ecc. Custom PHP si pu嘆 inserire nel child theme per personalizzare WP/theme/plugin 28
  • 29. RODOLFO MELOGLI 息2021 WP Hooks Sito WP 竪 un assemblaggio di funzioni PHP che poi restituiscono il risultato nel browser (header, contenuto, sidebar, footer) Durante questo assemblaggio, puoi "stoppare" il processo, "agganciare" la tua funzione, e farlo ripartire SENZA modi鍖care i 鍖le WP/theme/plugin 29
  • 30. RODOLFO MELOGLI 息2021 WP Hooks - Esempio "wp_head" <?php add_action( 'wp_head', 'googleanalytics' ); function googleanalytics() { echo '<script>codice qui</script>'; } ?> mentre WP assemblava l'header, ho "agganciato" il mio script chiamando la mia funzione custom 30
  • 31. RODOLFO MELOGLI 息2021 WP Hooks - Esempio "the_content" <?php add_鍖lter( 'the_content', 'concatena_banner' ); function concatena_banner( $content ) { $content = $content . '<img src=/BusinessBloomer/wordcamp-italia-2021-da-zero-a-php/"bann.jpg">& return $content; } ?> mentre WP assemblava il contenuto, ho "agganciato" il banner chiamando la mia funzione custom 31
  • 32. RODOLFO MELOGLI 息2021 WP Hooks: add_action add_鍖lter add_action ti permette di agganciarti a una do_action per aggiungere qualcosa (contenuto, un'azione, ecc.) add_鍖lter ti permette di agganciarti a un apply_鍖lters per manipolare qualcosa (es. array di categorie) 32
  • 33. RODOLFO MELOGLI 息2021 Un plugin ben sviluppato ti offre: una marea di do_action per aggiungere personalizzazioni tramite functions.php una marea di apply_鍖lters per intercettare le sue funzioni e manipolarle tramite functions.php altrimenti devi modi鍖care i core 鍖les (big NO) 33
  • 34. RODOLFO MELOGLI 息2021 Caso Studio 1: prefooter su tutte le pagine WP si desidera aggiungere una sezione "prefooter" con un banner vado a cercarmi l'hook di WP che corrisponde al momento in cui assembla il footer mi "aggancio" e faccio caricare prima la mia funzione custom 34
  • 35. RODOLFO MELOGLI 息2021 Caso Studio 1: prefooter <?php add_action( 'get_footer', 'prefooter', 1 ); function prefooter() { echo '<img src=/BusinessBloomer/wordcamp-italia-2021-da-zero-a-php/"header-banner.jpg">& } ?> 35 priority
  • 37. RODOLFO MELOGLI 息2021 Caso Studio 2: rimuovere WC tabs WooCommerce "aggiunge" i single product tabs con un suo hook: add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10 ); tramite PHP vogliamo rimuoverlo businessbloomer.com/woocommerce-visual-hook-gui de-single-product-page per lista hooks 37
  • 38. RODOLFO MELOGLI 息2021 Caso Studio 2: rimuovere WC tabs <?php remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10 ); ?> 38 unica differenza
  • 39. RODOLFO MELOGLI 息2021 Caso Studio 3: SEO <?php function home_meta_description() { if ( is_home() ) { echo '<meta name="description" content="Il WordCamp Italia 竪 un evento online organizzato dalla community italiana di WordPress">'; } } add_action( 'wp_head', 'home_meta_description'); ?> 39
  • 40. RODOLFO MELOGLI 息2021 Da zero a PHP 40
  • 41. RODOLFO MELOGLI 息2021 Recap Potremmo fare un WordCamp intero a riguardo In questi minuti hai imparato a scrivere in PHP, creare funzioni e manipolare un sito WP Ora sta a te continuare con lo studio e la pratica. Se in 15 minuti abbiamo fatto tutto questo, chiss in 100 ore cosa si pu嘆 ottenere! 41