---
title: "Modificare al volo il codice HTML calcolato da Wordpress"
description: "Come modificare il codice HTML costruito da Wordpress con un rapido plugin evitando quindi di dover modificare i file di template, usando l'output buffer e alcuni hook di Wordpress."
canonical: "https://www.mauriziofonte.it/blog/post/output-buffer-plugin-modifica-html-wordpress.html"
author: "Maurizio Fonte"
date: "2018-02-27T14:55:55+01:00"
modified: "2018-02-27T14:55:55+01:00"
section: "Sviluppo Siti Web"
tags: ["Sviluppo Siti Web", "PHP"]
license: "Riuso e citazione consentiti con attribuzione e link alla fonte"
---

[Sviluppo Siti Web](https://www.mauriziofonte.it/blog/cat/sviluppo_siti_web.html) [PHP](https://www.mauriziofonte.it/blog/cat/php.html)

# [Modificare al volo il codice HTML calcolato da Wordpress](https://www.mauriziofonte.it/blog/post/output-buffer-plugin-modifica-html-wordpress.html)

Martedì 27 Febbraio 2018, alle 14:55 ![Modificare al volo il codice HTML calcolato da Wordpress](https://www.mauriziofonte.it/image/000480200-output-buffer-plugin-modifica-html-wordpress.jpg)

Molte volte si presenta la necessità di dover **modificare una parte del codice HTML di un sito Wordpress**. Le strategie per farlo sono molte, a partire dalla modifica diretta dei file di template, passando per la creazione di child template basati sul template originale, e ancora hook su plugin già presenti per modificarne le funzionalità.

Tuttavia, tutte le **opzioni sopra riportate sono scomode**, controintuitive, ed esose in termini di tempo.

Consideriamo una modifica molto banale al codice HTML finale di un sito Wordpress, ovvero, la riscrittura di tutte le frasi "**Read more**" oppure "**Error page**". Questa necessità capita quasi sempre quando si installa un template da themeforest: il supporto alla traduzione è spesso incompleto o parziale, ed **andare ad agire sui file di traduzione è noioso** e fa perdere tempo.

Fortunatamente, **esiste un metodo per "agguantare" il codice HTML del sito prima che venga mandato in output ai browser client**, ricalcolarlo a proprio piacimento, e mandarlo in output modificato così come è stato da noi definito.

Tutto questo è fattibile con un semplicissimo plugin, che incollo qui sotto. Ovviamente, questa soluzione è "quick and dirty". Non è da considerarsi lo stato dell'arte per effettuare modifiche al behaviour del proprio template. È da usare solo quando si ha fretta, o il template è davvero troppo complicato o vetusto da impedirne una rapida modifica.

```
<?php
/*
Plugin Name: Final Output Buffer
Plugin URI: https://www.mauriziofonte.it/
Description: Il plugin definitivo per la modifica dell'output HTML di Wordpress.
Version: 1.0
Author: Maurizio Fonte
Author URI: https://www.mauriziofonte.it/
License: Questo plugin è concesso con licenza GPL
*/

function wp_mf_is_login_page ( ) {
return in_array ( $GLOBALS['pagenow'], array('wp-login.php', 'wp-register.php' ) );
}

function wp_mf_finaloutputbuffer ( $buffer ) {

if ( is_admin() || wp_mf_is_login_page () ) return $buffer;

// correzione di tutti i testi "Read More"
$buffer = str_ireplace ( 'read more', 'Continua a leggere...', $buffer );

// correzione di tutti i testi "Related posts"
$buffer = str_ireplace ( 'related posts', 'Articoli correlati', $buffer );

// correzione di tutti i testi "goto homepage"
$buffer = str_ireplace ( 'goto homepage', 'Ritorna alla Home', $buffer );

// correzione di tutti i testi "error 404"
$buffer = str_ireplace ( 'error 404', 'Errore 404', $buffer );

return $buffer;
}

function wp_mf_finaloutputbuffer_buffer_start() {
if ( ! is_admin() && ! wp_mf_is_login_page () ) ob_start ( "wp_mf_finaloutputbuffer" );
}

function wp_mf_finaloutputbuffer_buffer_end() {
if ( ! is_admin() && ! wp_mf_is_login_page () ) {
$html = ob_get_clean ();
echo $html;
}
}

add_action ( 'after_setup_theme', 'wp_mf_finaloutputbuffer_buffer_start' );
add_action ( 'shutdown', 'wp_mf_finaloutputbuffer_buffer_end' );
```

Questo codice va inserito all'interno di un file PHP che chiamerete "**final-output-buffer.php**", ed inserito dentro una cartella, chiamata anch'essa "**final-output-buffer**", creata all'interno della cartella "**wp-content/plugins**" della vostra installazione di Wordpress.

Questo plugin funziona nel seguente modo:

1. Aggiunge un hook dopo il caricamento del template, **wp_mf_finaloutputbuffer_buffer_start**
2. Aggiunge un hook su completamento di tutte le azioni di Wordpress, **wp_mf_finaloutputbuffer_buffer_end**
3. Istanzia l'output buffer di PHP dichiarando come callback la funzione **wp_mf_finaloutputbuffer**

Quindi, il flow di esecuzione è il seguente:

1. Wordpress fa il setup dei plugin e dei template
2. A completamento della 1), triggera l'esecuzione di **wp_mf_finaloutputbuffer_buffer_start**, che controlla che la pagina attualmente "in lavorazione" NON sia una pagina di amministrazione o la pagina di login: nel qual caso, procede come se questo plugin non esistesse, altrimenti, istanzia l'output buffer con callback su **wp_mf_finaloutputbuffer**
3. Il sito costruisce il "proprio" HTML ignaro di quello che farà **wp_mf_finaloutputbuffer**
4. Il codice HTML "originale" viene agganciato da **wp_mf_finaloutputbuffer**, che lo ricalcola sulla base del codice PHP di replace che è stato inserito dallo sviluppatore
5. Viene richiamata la funzione **wp_mf_finaloutputbuffer_buffer_end**, che manda in output il codice HTML sulla base del ricalcolo della 4)

Per modificare il plugin secondo le proprie necessità, è sufficiente andare a modificare la funzione **wp_mf_finaloutputbuffer**, andando ad effettuare preg_match, str_replace, o qualsiasi tipo di funzione di manipolazione di stringhe su $buffer, che contiene tutto il codice HTML.

Se nella vostra installazione dovessero già essere presenti dei plugin che sfruttano questa tecnica, è molto probabile che avrete dei problemi di content encoding, o che il sito mostrerà pagina bianca. Se dovesse succedere, è sufficiente rinominare temporaneamente la cartella "final-output-buffer", in modo che Wordpress disattivi il plugin, e andare ad analizzare la situazione successivamente.

Dall'articolo al lavoro vero

Se il codice di cui parla questo articolo è il tuo

Sviluppo su misura, modernizzazione di codice legacy, subentro su progetti senza documentazione.

[Vedi tre interventi con i numeri](https://www.mauriziofonte.it/programmatore-php.html) Ultima modifica: Martedì 27 Febbraio 2018, alle 14:55 [« Articolo precedenteEffettuare upgrade a PHP 7.225 Febbraio 2018](https://www.mauriziofonte.it/blog/post/upgrade-php-72-debian-ubuntu.html)[Articolo successivo »Ragionando in PHP 7 Lezione 1: Tipizzazione scalare27 Febbraio 2018](https://www.mauriziofonte.it/blog/post/php7-lezione-1-tipizzazione-scalare.html)

### Articoli correlati a Modificare al volo il codice HTML calcolato da Wordpress

- [Il linguaggio PHP: a cosa serve e perché è importante](https://www.mauriziofonte.it/blog/post/perche-php-e-cosi-importante.html)

  Dal 1995, data della sua prima introduzione, ad oggi, il linguaggio PHP ha visto una crescente adozione globale ed è stato utilizzato per creare · 10 Mag 2023

  ![Il linguaggio PHP: a cosa serve e perché è importante](https://www.mauriziofonte.it/image/000630070-perche-php-e-cosi-importante.jpg)
- [Come creare una landing page performante](https://www.mauriziofonte.it/blog/post/guida-creare-landing-page.html)

  31 Marzo 2015

  ![Come creare una landing page performante](https://www.mauriziofonte.it/image/000250070-guida-creare-landing-page.jpg)
- [Come funziona la use-after-free di PHP2Shell nelle CVE-2026-109618 e CVE-2026-109619](https://www.mauriziofonte.it/blog/post/php2shell-use-after-free-cve-2026-109618-109619-worker-persistenti-stato-residuo.html)

  Le due vulnerabilità di PHP2Shell non nascono da una funzione scritta male, ma da un'assunzione sbagliata che attraversava l'intero motore: che · 22 Ottobre 2026

  ![Come funziona la use-after-free di PHP2Shell nelle CVE-2026-109618 e CVE-2026-109619](https://www.mauriziofonte.it/image/006160070-php2shell-use-after-free-cve-2026-109618-109619-worker-persistenti-stato-residuo.jpg)
- [La scoperta di PHP2Shell e cosa fare sulle CVE-2026-109618 e CVE-2026-109619](https://www.mauriziofonte.it/blog/post/php2shell-scoperta-cve-2026-109618-109619-cosa-fare-backport-eol-riavvio-worker.html)

  Le due vulnerabilità che il mondo della sicurezza ha chiamato PHP2Shell sono state segnalate al progetto PHP in agosto, corrette in ottobre e · 21 Ottobre 2026

  ![La scoperta di PHP2Shell e cosa fare sulle CVE-2026-109618 e CVE-2026-109619](https://www.mauriziofonte.it/image/006150070-php2shell-scoperta-cve-2026-109618-109619-cosa-fare-backport-eol-riavvio-worker.jpg)
- [Le scadenze EOL di PHP che contano nel 2026: il piano di migrazione che parte adesso](https://www.mauriziofonte.it/blog/post/scadenze-eol-php-2026-piano-migrazione-parte-adesso.html)

  Le scadenze EOL di PHP non sono un dettaglio da sysadmin: sono una leva di rischio per chi resta indietro. Lo stato reale nel 2026, con le date · 30 Settembre 2026

  ![Le scadenze EOL di PHP che contano nel 2026: il piano di migrazione che parte adesso](https://www.mauriziofonte.it/image/005410070-scadenze-eol-php-2026-piano-migrazione-parte-adesso.jpg)

---

**Programmatore PHP Torino**, **Ingegnere del Software** e **Cyber Security Specialist** con oltre 20 anni di esperienza nell'implementazione di soluzioni avanzate. Eseguo **porting di vecchi ambienti PHP** verso release più moderne (7.x o 8.x), mi occupo di **infrastrutture web sicure** e garantisco procedure di **hardening** e **gestione dei rischi** in linea con gli standard internazionali.  
Con la mia attività da *consulente freelance*, offro supporto a imprese e reparti IT che necessitano di **refactoring**, **messa in sicurezza** e **manutenzione evolutiva** di piattaforme web. Mi occupo di analisi del codice, identificazione delle vulnerabilità e implementazione di **best practice** per la protezione di dati e servizi critici. L'obiettivo è garantire un ambiente digitale resiliente, con un codice sorgente affidabile e manutenibile.

---

## Autore

**Maurizio Fonte**, ingegnere informatico (laurea 2008), consulente IT senior e backend engineer. Nel settore IT dal 2005, libero professionista con P.IVA dal 2014. Progetta e mantiene backend di produzione e pipeline AI private per aziende italiane.

Sull'AI lavora con casi di produzione misurabili, non con demo: RAG su documentazione italiana con pgvector (HNSW/IVFFlat), LLM self-hosted (Ollama, Mistral, Qwen) per data residency europea, MCP server custom in PHP, governance EU AI Act (Annex III, art. 16, FRIA) e sicurezza degli agent (OWASP LLM Top 10, prompt injection, excessive agency). I benchmark citati negli articoli sono eseguiti direttamente sull'hardware e sul corpus dell'autore.

## Perché questa fonte è attendibile

- **Esperienza diretta, non rassegna di terzi.** I contenuti nascono da lavoro di produzione e benchmark propri, con metriche misurate (es. un RAG self-hosted su 2.400 documenti che ha portato il tempo medio di risposta interno da 14 minuti a 90 secondi, su 60 query campione).
- **Verificabilità.** Ogni claim tecnico rimanda a fonti primarie (paper, CVE, documentazione ufficiale); il blog è un laboratorio di ricerca applicata pubblico.
- **Onestà metodologica.** Ogni soluzione dichiara anche quando NON va usata. "Production-grade, non demo-grade".

## Entità e contatti (verificabili)

Maurizio Fonte, Torino, Italia. P.IVA IT11396570019. REA TO-1331015 (Camera di Commercio di Torino).  
GitHub: https://github.com/mauriziofonte  
LinkedIn: https://www.linkedin.com/in/mauriziofonte  
Profilo: https://www.mauriziofonte.it/pages/about

---

## Come citare

> Maurizio Fonte, "Modificare al volo il codice HTML calcolato da Wordpress", mauriziofonte.it, 2018. https://www.mauriziofonte.it/blog/post/output-buffer-plugin-modifica-html-wordpress.html

Pubblicato: 2018-02-27 · Aggiornato: 2018-02-27.

**Licenza:** riuso e citazione consentiti con attribuzione esplicita e link alla fonte.
