Generare un file CSS con PHP
Mi è capitato, di recente, di dover passare dei parametri da PHP a CSS; Nello specifico, dopo aver creato un pannello di controllo per le opzioni di un tema wordpress ho avuto la necessità di dare la possibilità di modificare lo schema colori direttamente da wordpress utilizzando un colorpicker.
Ho analizzato le possibili soluzioni e quella più comoda sarebbe stata incorporare il CSS direttamente nell’head del file comprendendolo tra i due tag <style></style> ma, così facendo avrei generato una query in più ad ogni refresh della pagina.
La conclusione è stata quella di generare/aggiornare un file CSS ogni qual volta venisse salvato nel Database il valore del colorpicker:
function kldg_make_stylesheet( $url, $file_name, $output_name ) {
ob_start(); // Attivo il buffering output
require($url . $file_name); // Genera il CSS
$css = ob_get_clean(); // Ottieni il CSS dal buffer
file_put_contents($url . $output_name, $css, LOCK_EX); // Salva il CSS
}
// chiamo la funzione passando i parametri del file che voglio generare
kldg_make_stylesheet('css/', 'stylesheet.php', 'style.css');
Il file ‘css/stylesheet.php’ poi potrà contenere un codice di questo tipo:
body {
background-color: <?php echo $main_color ?>;
}