domenica 27 Settembre 2020

Download in corso

Softwareone.it

17-09-2019

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.

Pubblicità

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.

Pubblicità

Il codice sarà inserito più in alto possibile appena dopo l’apertura del tag <head>.

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

Pubblicità

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.

Pubblicità

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

Ripulire E Velocizzare Browser

Lascia un commento

Pubblicità