Cosa sono e come funzionano gli hook di WordPress

Pubblicato in data 12 Settembre 2019 Categoria Consigli WordPress

Hook WordPress

L’ hook di WordPress è una funzione che ti consente di manipolare una procedura senza modificare il file del core di WordPress. Un hook (gancio) può essere applicato sia all’azione (action hook) sia al filtro (filter hook).

Conoscere gli hook è essenziale per qualsiasi utente WordPress perchè può aiutarti a creare funzioni o modificare le impostazioni predefinite di temi o plugin.

Scopo dei WordPress Hooks

Lo scopo principale degli hook è eseguire automaticamente una funzione. Questa tecnica ha la possibilità di modificare, estendere o limitare la funzionalità di temi e/o plugin.

Ecco un esempio di hook WordPress:

function mytheme_enqueue_script() 
{wp_enqueue_script( 'my-custom-js', 'custom.js', false );}
add_action( 'wp_enqueue_scripts', 'mytheme_enqueue_script' );

L’esempio sopra mostra che l’hook è stato creato per connettere la funzione mytheme_enqueue_script con l’ azione wp_enqueue_scripts. Questo hook attiva una nuova azione sul tuo sito, pertanto viene chiamato action hook.

Gli hook vengono spesso utilizzati per creare componenti plugin di un’applicazione. Non viene utilizzato solo nei sistemi di gestione dei contenuti (CMS) come WordPress, ma viene anche comunemente utilizzato nei siti di e-commerce e intranet all’interno di un’azienda.

Inoltre, come detto sopra, i ganci sono divisi in due categorie: action e filter. L’action hook viene utilizzato per aggiungere un processo, mentre le funzioni di filter hook per cambiare o modificare il valore di un processo.

Come utilizzare gli Hook di WordPress?

L’uso dei WordPress hooks richiede un po’ di conoscenza di HTML e PHP ma anche se sei un principiante assoluto, la creazione di action e filter hooks non è così difficile come potresti pensare.

Devi solo andare alla pagina dei post, quindi passare all’editor di testo. Quando sei lì, puoi incollare i ganci che hai copiato da altri siti o creato tu stesso.

Creazione di un Action Hook WordPress

Per aggiungere un action hook, è necessario attivare la funzione add_action () nel plugin WordPress. Questa funzione può essere attivata scrivendo i seguenti pattern nel tuo file functions.php:

add_action(the 'function name of target_hook', 'Il_nome_della_funzione_che_vuoi_utilizzare' ,'priority_scale')

Come puoi vedere, gli hooks utilizzano una scala di priorità per funzionare correttamente. Questa scala è un valore ordinale automatico basato su una scala da 1 a 999. Definisce la precedenza dell’ordine per le funzioni associate a quel particolare hook.

Un valore di priorità più basso indica che la funzione verrà eseguita prima, mentre quella con un valore più alto verrà eseguita successivamente. La scala mostrerà la sequenza di output delle funzioni installate quando si usano gli stessi target_hooks .

Il valore predefinito di priority_scale è 10. È possibile disporre la scala in base al numero di target_hooks .

Ecco un esempio di action hook:

<?php
add_action( 'wp_print_footer_scripts', 'creativemotions_custom_footer_scripts' );
function webagency_custom_footer_scripts(){
?>
<script>//fill the footer scripts right here</script>
<?php
}
?>

Nota il modello nell’esempio sopra:

  1. <?php è dove si mette in funzione l’hook
  2. add_action è il comando per creare l’action hook
  3. wp_print_footer_scripts è il target_hook che si collega a una nuova funzione
  4. Creativemotions_custom_footer_scripts è la funzione installata e collegata a target_hook
  5. <script> rappresenta il testo che si desidera mostrare su target_hook (in questo caso, è wp_print_footer_scripts )

Creazione di un Filter Hook WordPress

È possibile creare un filter hook utilizzando la funzione apply_filters () . Il filter hook viene utilizzato per modificare, filtrare o sostituire un valore con uno nuovo.

Proprio come l’utilizzo di un action hook, ha anche una funzione che filtra un valore con le funzioni di filter hook associate ( apply_filter ).

Inoltre, ha la funzione di aggiungere un hook filter da associare a un’altra funzione ( add_filter ).

Ecco un esempio di filter hook:

$score = 100;
echo "Il punteggio attuale è : ". apply_filters( 'change_score', $score );
  1. $score = 100 è il valore del punteggio iniziale
  2. echo “Il punteggio attuale è:” rappresenta lo script che stai mostrando
  3. apply_filters è il comando per creare un filter hook
  4. ‘change_score’,  $score è la funzione da filtrare

Questo è il filtro:

add_filter( 'change_score', 'function_change_score' );
function function_change_score( $score ){
? $score+=100;
? return $score;
}
  • Add_filter è stato creato per collegare il filter hook con una nuova funzione
  • ‘Change_score’ è l’hook di destinazione che verrà modificato
  • ‘Function_change_score‘ è una nuova funzione che influenzerà il valore iniziale
  • ? $score+ =100; è il codice per aggiungere valore al valore iniziale ($score)
  • ? return $score; è il codice per mostrare il nuovo valore alla fine

Il risultato dovrebbe apparire così:

Current score: 200

Azioni e filtri di sgancio

Se vuoi disabilitare il comando da add_action () o add_filter () nel tuo codice WordPress, puoi usare remove_action () e remove_filter () .

Questi codici sono sostanzialmente un modo per escludere determinate azioni o funzioni di filtro. Questa operazione ti consente ad esempio di modificare un plugin che ha troppi hook inutili che potrebbero interrompere l’ottimizzazione del tuo sito.

In questo momento, potresti chiederti questo; “Perché non eliminare semplicemente questi codici non necessari?”

Bene, è certamente un’opzione praticabile se lo fai su codice scritto da te.

Su WordPress però, lavori spesso con plugin o temi di qualcun altro, rischi di commettere un errore fatale se elimini le righe sbagliate.

Ecco un esempio di remove_action () in WordPress:

remove_action( 'wp_print_footer_scripts', 'creativemotions_custom_footer_scripts', 11 );
add_action( 'wp_print_footer_scripts', 'creativemotions_custom_footer_scripts_theme', 11 );
function creativemotions_custom_footer_scripts_theme()
{
?>
<script>//example of output by theme</script>
<?php
}

L’esempio sopra mostra che remove_action viene utilizzato per eliminare gli script piè di pagina predefiniti di WordPress e sostituirli con il tema degli script piè di pagina personalizzati di Creativemotions.

Questo comando è applicabile a tutti i tipi di action hooks in WordPress.

Inoltre, ecco un esempio di remove_filter:

remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
}

L’esempio sopra mostra come disattivare wp_staticize_emoji_for_email che converte gli emoji in immagini statiche.

Quindi li sostituisce con disable_emojis_tinymce che disattiverà la funzione emoji in WordPress (è noto che le emoji rallentano il sito perché effettuano una richiesta HTTP aggiuntiva).

Inoltre, puoi anche usare il comando remove_filter per disabilitare più filtri in una sequenza. Ecco un esempio:

function disable_emojis() {
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
add_action( 'init', 'disable_emojis' );
}

Il codice sopra ha lo scopo di eliminare completamente la funzione emoji in WordPress. Illustra chiaramente che non ci sono limiti al numero di comandi remove_filter che puoi incorporare in functions.php .

Esempi pratici

Come accennato in precedenza, ci sono molti hook che puoi usare per creare funzioni WordPress personalizzate. Qui ce ne sono un po:

admin_post_thumbnail_size

Questo filter hook visualizza un’immagine in miniatura del tuo post in “Immagine in primo piano”. Ci sono tre parametri collegati alle funzioni: $size, $thumbnail_id e $post .

L’hook dovrebbe apparire così:

$size = apply_filters( 'admin_post_thumbnail_size', $size, $thumbnail_id, $post );

Tieni presente che il parametro $size può essere modificato in base alle tue esigenze. Se desideri ad esempio impostare la dimensione della miniatura su 240 x 240 pixel, puoi scrivere questo codice:

$size = apply_filters( 'admin_post_thumbnail_size', 240, $thumbnail_id, $post);

Puoi anche impostare una dimensione personalizzata per la tua miniatura aggiungendo la funzione array (). Il codice sarà simile al seguente:

$size = apply_filters( 'admin_post_thumbnail_size', array(240, 400), $thumbnail_id, $post);

La funzione array () imposta la miniatura per essere visualizzata a 240 x 400 pixel. Dovresti trovare la dimensione migliore che si adatta perfettamente alla tua pagina.

after_password_reset

Questo action hook WordPress viene attivato quando un utente reimposta la propria password. L’hook è costituito da due parametri; $user e $new_pass.

L’hook dovrebbe apparire così:

do_action( 'after_password_reset', $user, $new_pass );

customize_loaded_components

Questo hook funge da filtro per escludere alcuni componenti di WordPress dal suo processo principale. Quelle sono le funzioni che funzionano sui file core, come wp-activate.php , wp-config-sample.php o wp-settings.php . Mentre il componente è una raccolta di funzionalità su WordPress che rappresenta una particolare funzione nel widget.

E’ importante notare che customize_loaded_components non può essere aggiunto in un tema poiché viene attivato solo durante la fase di “caricamento dei plugin”.

L’hook è costituito da due parametri: $components e $this. Dovrebbe essere scritto così:

$components = apply_filters( 'customize_loaded_components', array( 'widgets', 'nav_menus' ), $this );

Il parametro $components è un batch di funzioni principali da caricare, mentre $this si riferisce all’oggetto nella classe esistente.

È possibile personalizzare la funzione array () per determinare quali componenti escludere. L’esempio sopra mostra che widget e nav_menus sono i componenti esclusi dal processo principale.

Conclusione

Per riassumere tutto, gli hook sono le funzionalità per cambiare la configurazione predefinita del tuo sito WordPress. Ti consentono di aggiungere funzioni personalizzate o disabilitare i processi senza modificare il file principale.

I WordPress hooks possono essere divisi in due categorie: action e filter. Sebbene i metodi di utilizzo di questi due siano quasi gli stessi, entrambi hanno funzioni completamente diverse.

L’action hook è usato per creare nuove funzioni, mentre il filter hook è usato per modificare il codice esistente nel file function.php.

Inoltre, ci sono tonnellate di hook che puoi incorporare in WordPress. Prova a sperimentare usando vari tipi di hook per manipolare le funzioni come desideri.