WordPress estendere il file functions.php
Il file functions.php di wordpress viene utilizzato per definire funzioni, classi, azioni e filtri che possono essere utilizzati da altri modelli nel tema.
Functions.php è il file delle funzioni del tema è un modello utilizzato dai temi di WordPress. Funziona come un plug-in e viene caricato automaticamente nelle pagine di amministrazione e front-end di un sito WordPress.
Può essere utilizzato per aggiungere funzionalità ed estendere la funzionalità di entrambi i temi e l’installazione di WordPress.
I temi secondari possono avere i propri file function.php che possono essere utilizzati per compilare o sostituire completamente quello nella directory del tema principale.
Gli Hook
Gli hook sono un modo per interagire / modificare un altro pezzo di codice.
Costituiscono le basi in cui plugin e temi interagiscono con il Core di WordPress, ma sono anche ampiamente utilizzati da Core stesso.
Esistono due tipi di hook: Azioni e Filtri .
Le azioni ti consentono di aggiungere dati o modificare il funzionamento di WordPress.
I filtri ti danno la possibilità di modificare i dati durante l’esecuzione di WordPress.
Hooks
Aggiungere CSS o JavaScript esterni
La funzione wp_enqueue_style
permette di inserire chiamate a risorse esterne per integrare fogli stile o plugin JavaScript.
function addThemeScripts() { wp_enqueue_style( 'new-style', get_stylesheet_directory_uri() . '/css/custom_style.css', array(), '', 'all' ); } add_action( 'wp_enqueue_scripts', 'addThemeScripts' );
La funzione wp_enqueue_script
importa JavaScript esterni.
function addThemeScripts() { wp_enqueue_script( 'new-script', get_stylesheet_directory_uri() . '/js/custom_script.js', array(), '', true ); } add_action( 'wp_enqueue_scripts', 'addThemeScripts' );
https://codex.wordpress.org/Plugin_API/Action_Reference/wp_enqueue_scripts
Inserire codice nella testata <head>
function add_codeToHead() { $code = '<style rel="stylesheet" type="text/css" src="/css/style.css" media="all" />'; echo $code; } add_action('wp_head', 'add_codeToHead', 1);
Il valore 1
definisce la massima priorità in una scala da 1 a 10.
Il codice sarà inserito più in alto possibile appena dopo l’apertura del tag <head>
.
Codice nel footer
function add_codeToFooter() { $code = '<script type="text/javascript" src="/js/script.js"></script>'; echo $code; } add_action('wp_footer', 'add_codeToFooter');
Consentire l’upload di qualsiasi file
WordPress permette l’upload di estensioni comuni come .png e .jpg.
È possibile estendere la possibilità di upload a qualsiasi tipo di file.
function my_myme_types($mime_types){ $mime_types['svg'] = 'image/svg+xml'; // Consenti di caricare SVG $mime_types['psd'] = 'image/vnd.adobe.photoshop'; // Consenti di caricare PSD return $mime_types; } add_filter('upload_mimes', 'my_myme_types', 1, 1);
https://codex.wordpress.org/Uploading_Files#About_Uploading_Files_on_Dashboard
https://www.freeformatter.com/mime-types-list.html
Disabilitare Gutenberg editor
Il filtro use_block_editor_for_post
permette di limitare l’attivazione di Gutenberg durante la scrittura attraverso la funzione di WordPress __return_false
.
add_filter( 'use_block_editor_for_post', '__return_false' );
Disattivare la ricerca
In alcuni casi può essere necessario disattivare completamente la funzionalità di ricerca su sito.
function fb_filter_query( $query, $error = true ) { if ( is_search() ) { $query->is_search = false; $query->query_vars[s] = false; $query->query[s] = false; if ( $error == true ) $query->is_404 = true; } } add_action( 'parse_query', 'fb_filter_query' ); add_filter( 'get_search_form', create_function( '$a', "return null;" ) );
Escludere pagine dalla ricerca
Limitare la ricerca solo agli articoli
if ($query->is_search) { $query->set('post_type', 'post'); } return $query; } add_filter('pre_get_posts','SearchFilter');
Disabilitare i feed RSS
function itsme_disable_feed() { wp_die( __('Nessun feed disponibile, visita la <a href="'. get_bloginfo('url') .'">homepage</a>!') ); } add_action('do_feed', 'itsme_disable_feed', 1); add_action('do_feed_rdf', 'itsme_disable_feed', 1); add_action('do_feed_rss', 'itsme_disable_feed', 1); add_action('do_feed_rss2', 'itsme_disable_feed', 1); add_action('do_feed_atom', 'itsme_disable_feed', 1); add_action('do_feed_rss2_comments', 'itsme_disable_feed', 1); add_action('do_feed_atom_comments', 'itsme_disable_feed', 1);
Con la funzione wp_die
è possibile inserire un messaggio personalizzato
Minificare il codice della pagina
Un codice sorgente minificato permette di ottenere un peso minore del tema e un rendering più efficiente; gestire una completa rimozione degli spazi bianchi superflui e dei commenti ottenendo un codice compresso e privo di formattazione.
function sanitize_output($buffer) { $search = array( '/\>[^\S ]+/s', // Rimozione spazi bianchi dopo i tag '/[^\S ]+\</s', // Rimozione spazi bianchi prima dei tag '/(\s)+/s', // Rimozione sequenze multiple di spazi bianchi '/<!--(.|\s)*?-->/' // Rimozione commenti HTML ); $replace = array( '>', '<', '\\1', '' ); $buffer = preg_replace($search, $replace, $buffer); return $buffer; } ob_start("sanitize_output");
Aggiornare l’indirizzo del sito
update_option( 'siteurl', 'https://miosito.it' ); update_option( 'home', 'https://miosito.it' );
Riscrivere gli slug principali
Gli slug di base come /page/ nel caso delle paginazione
function re_rewrite_rules() { global $wp_rewrite; $wp_rewrite->author_base = 'autore'; $wp_rewrite->search_base = 'ricerca'; $wp_rewrite->comments_base = 'commento'; $wp_rewrite->pagination_base = 'pagina'; $wp_rewrite->flush_rules(); } add_action('init', 're_rewrite_rules');
utenti loggati
// Se l'utente è loggato if ( is_user_logged_in() ) { // Esegui questo script o questa funzione } // Se l'utente non è loggato if ( !is_user_logged_in() ) { // Esegui questo script o questa funzione }
Disabilitare l’API REST
Cconsentire solo agli utenti che hanno effettuato l’accesso di utilizzare il resto api
add_filter( 'rest_authentication_errors', function( $result ) { if ( ! empty( $result ) ) { return $result; } if ( ! is_user_logged_in() ) { return new WP_Error( 'rest_not_logged_in', 'You are not currently logged in.', array( 'status' => 401 ) ); } return $result; });
Rimuovi le informazioni sul generatore
WordPress aggiunge le informazioni sulla versione del WP attualmente installato: <meta name="generator" content="WordPress 5.2" />
remove_action('wp_head', 'wp_generator');
Rimuovi emoji
Codice per emoji che rimane nella sezione principale del sorgente;
window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/12.0.0-1\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/12.0.0-1\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/clean-wp-head.dev\/wp-includes\/js\/wp-emoji-release.min.js?ver=5.2"}};
remove_action('wp_head', 'print_emoji_detection_script', 7); remove_action('wp_print_styles', 'print_emoji_styles');
La prima riga rimuove il codice JS, la seconda rimuove gli stili CSS incorporati.
Rimuovi manifest di Windows Live Writer
Se non si utilizza Windows Live Writer, è possibile rimuovere il collegamento wlwmanifest.xml
remove_action('wp_head', 'wlwmanifest_link');
Rimuovi il profilo dei metadati XFN
È un link per XFN che è XHTML Friends Network. Questo è il modo di descrivere le relazioni tra utenti in modo leggibile automaticamente.
< link rel="profile" href="https://gmpg.org/xfn/11" />
Questo tag viene aggiunto direttamente nel file header.php
e deve essere rimosso manualmente.
https://codex.wordpress.org/Defining_Relationships_with_XFN
Lascia un commento
Devi essere connesso per inviare un commento.