Viaggi Spirituali è un blog dedicato a luoghi, chiese e santuari che sono mete di pellegrinaggi religiosi, in Italia così come in Polonia e in Francia. Mi è stato chiesto di integrare il sito con delle strutture per il turismo religioso. Viaggi Spirituali, come spiega la redazione, è un sito aperto ai contributi degli utenti, e quindi sono accettati i suggerimenti per aggiungere o modificare le strutture.
Le pagine delle strutture sembrano essere pagine WordPress, ma in realtà sono gestite in autonomia da un CMS secondario ad-hoc. E’ possibile infatti gestire in autonomia un albero di pagine che mantiene però l’aspetto del nostro blog. Basta creare un’unica pagina in WordPress, alla quale redirezionare tramite mod_rewrite tutte le richieste:
RewriteRule ^strutture-turismo-religioso/(.*)$ /file-che-gestisce-questa-parte-del-sito.php [L]
Questa regola va messa prima di tutte le altre. All’interno del file che si occupa di gestire questa parte del sito ho salvato il contenuto testuale in una variabile, e prima di includere l’index.php di WordPress ho reimpostato un paio di variabili per evitare l’errore 404:
$_SERVER['REQUEST_URI'] = $_SERVER['REDIRECT_URL'] = '/strutture-turismo-religioso/';
ob_start(); include 'index.php'; $wp_page = ob_get_contents(); ob_end_clean();
Ci affidiamo all’output buffering per poter memorizzare in una variabile il risultato dell’elaborazione di WordPress e poter così apporre tutte le dovute sostituzioni. Se come contenuto della pagina abbiamo lasciato un riferimento, basta una sola riga di codice per avere la pagina da mostrare:
$pagina_da_mostrare = str_replace('[nostro_riferimento]', $contenuto_elaborato, $wp_page);
Ed ecco che senza modificare un solo file del core o del tema WordPress abbiamo integrato un insieme di pagine e sottopagine che possiamo gestire in completa autonomia mantenendo comunque il tema ed i widget scelti, senza che ce ne sia traccia nel database: ma per la creazione della sitemap questo non è un fatto positivo, a cui bisogna porre rimedio. Il meccanismo è lo stesso: sempre tramite mod_rewrite ho redirezionato le richieste di sitemap.xml e sitemap.xml.gz verso un mio file PHP che recupera la sitemap originale e la integra con le pagine extra.