web-dev-qa-db-fra.com

Comment s'y prendre avant de générer un fichier css avec des variables à partir d'options de thème

Je sais qu'il y a eu beaucoup de discussions sur le rendu d'un fichier css avec des variables php. La méthode "non non" pour amorcer le wp-load.php par exemple.

Je travaille sur un framework de thème depuis quelques mois et l’une des choses qu'il fait est de générer un fichier CSS à l’aide de l’action de demande d’analyse.

add_action( 'parse_request', 'parse_dynamic_css_request' );
function parse_dynamic_css_request($wp) {
    if ($_GET['dynamic-css'] && $_GET['dynamic-css'] == 'css') {
    require get_stylesheet_directory() . '/library/css/dynamic.css.php';
    exit;
    }
}

Bien que cela fonctionne et fait le travail. Je sais qu'il doit y avoir une meilleure façon de le faire car je sais que c'est un avantage énorme d'avoir ceci, ce n'est pas nécessairement idéal.

J'ai une idée de comment cela fonctionnerait vraiment bien et servir un fichier statique sur le front-end.

Ma pensée est que depuis avec wordpress, vous pouvez avoir du code fonctionnel dans le fichier themes.php qui s’exécute dans l’administrateur. Avec php, il doit exister un moyen de générer le fichier css lorsque les options de thèmes sont enregistrées à partir de l’administrateur.

Lorsque les options de thème sont enregistrées, le fichier css.php est traité mais les résultats sont enregistrés dans un fichier CSS statique. Ensuite, lorsque les utilisateurs chargent le site sur le serveur frontal, ils reçoivent le fichier statique généré lors de la sauvegarde des options.

J'ai toute la logique dont j'ai besoin pour le faire et le code que je possède ira très bien d'un point de vue wordpress. Mon problème est que mes compétences en php avec la manipulation de fichier sont en mauvais état, car je ne l'utilise presque jamais.

Alors, comment pourrais-je m'y prendre avec php. Ce que je voudrais faire est de copier le code php généré dans un fichier css statique avec php. Je pense que ce serait en utilisant

file_get_contents();

Des idées?

Merci,

2
Andy James
$ss_dir = get_stylesheet_directory(); // Shorten code, save 1 call
ob_start(); // Capture all output (output buffering)
require($ss_dir . '/library/css/dynamic.css.php'); // Generate CSS
$css = ob_get_clean(); // Get generated CSS (output buffering)
file_put_contents($ss_dir . '/library/css/static.css', $css, LOCK_EX); // Save it

Cordialement.

PS: Vous ne pouvez pas être un développeur doué pour les fichiers éraillés. Ils ne sont pas facultatifs.

1
EarnestoDev