- WordPress :5.7
- Statut : résolu
- Ce sujet contient 2 réponses, 2 participants et a été mis à jour pour la dernière fois par Rock4Temps, le il y a 3 années et 6 mois.
-
AuteurMessages
-
17 mars 2021 à 16 h 52 min #2372843
Bonjour,
Ma configuration WP actuelle
- Version de PHP/MySQL : 7.4.1/v5.7.24
- Thème utilisé : OceanWP
- Extensions en place : Elementor – 3.1.4 Event Tickets – 5.1.1 Imagify – 1.9.14 Ninja Forms – 3.5.1 Ocean Extra – 1.7.3 The Events Calendar – 5.4.0.2
- Nom de l’hébergeur : O2switch
- Adresse du site :
Problème(s) rencontré(s) : CSS DYNAMIQUE DANS UNE EXTENSION
Bonjour j’ai un soucis pour mettre en place du css dynamique pour un développement d’une extension.
Je souhaite récupérer les paramètres de réglages enregistrés dans la table options pour les affecter
a des règles CSS.
j’ai crée une feuille de style d’extension .php voici le code:<?php
header('content-type: text/css');
$settings = get_option( 'ecet_multiple_setting' );
?>
.table-participant td {
border-width: <?php echo $settings['ecet_select_border_width_field']; ?>px;
border-color: <?php echo $settings['ecet_color_border_field']; ?>;
font-size: <?php echo $settings['ecet_select_font_size_field']; ?>px;
color: <?php echo $settings['ecet_font_color_field']; ?>;
}
.table-participant tbody > tr:nth-child(2n) td {
background: <?php echo $settings['ecet_color_line_field']; ?>;
}Je charge cette feuille de style dans le fichier principal du plugin via ce code:
if ( !function_exists('ecet_chargement_style_haute_priorite') ) {
function ecet_chargement_style_haute_priorite() {
wp_enqueue_style(
'ecet_custom_event_tickets_style',
plugin_dir_url( __FILE__ ) . 'css/style.php',
array(),
'1.4'
);
}
}
if( !is_admin() ) {
add_action( 'wp_enqueue_scripts', 'ecet_chargement_style_haute_priorite','15' );
}Quand j’inspecte le code , la feuille de style est bien chargé, le soucis est que la fonction WordPress get_option()
ne retourne aucune valeurs a partir de style.php alors qu’elle fonctionne dans le fichier principal du plugin ?17 mars 2021 à 19 h 23 min #2372860dans le fichier que vous avez créé, vous n’avez pas accès au fonctions wordpress.
vous pouvez faire comme cela sans avoir besoin de donner un accès direct à un fichier :
add_action("wp_loaded", function () {
if (!isset($_GET["ecet__generation_css"])) {
return;
}
$settings = get_option( 'ecet_multiple_setting' );
header("Content-type: text/css");
?>
.table-participant td {
border-width: <?php echo $settings['ecet_select_border_width_field']; ?>px;
border-color: <?php echo $settings['ecet_color_border_field']; ?>;
font-size: <?php echo $settings['ecet_select_font_size_field']; ?>px;
color: <?php echo $settings['ecet_font_color_field']; ?>;
}
.table-participant tbody > tr:nth-child(2n) td {
background: <?php echo $settings['ecet_color_line_field']; ?>;
}
<?php
exit();
});
add_action("wp_enqueue_scripts" , function () {
wp_enqueue_style(
"ecet__generation_css"
, home_url("?ecet__generation_css")
, []
, wp_get_theme()->version
);
});par contre je ne sais pas si le contenu du CSS généré est mis en cache donc ça serait plus simple de le générer directement dans la page, non ?
17 mars 2021 à 19 h 44 min #2372866Ok merci pour le retour, effectivement je pense qu’il n’y aura pas de mise en cache.
Je vais donc opter pour un css dynamique dans la page principale de l’extension.
Bonne soirée !
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.