[Résolu] CSS DYNAMIQUE DANS UNE EXTENSION (Créer un compte)

  • WordPress :5.7
  • Statut : résolu
3 sujets de 1 à 3 (sur un total de 3)
  • Auteur
    Messages
  • #2372843
    Rock4Temps
    Participant
    Chevalier WordPress
    443 contributions

    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 ?

    #2372860
    mathieu42
    Participant
    Maître WordPress
    921 contributions

    dans 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 ?

    #2372866
    Rock4Temps
    Participant
    Chevalier WordPress
    443 contributions

    Ok 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 !

3 sujets de 1 à 3 (sur un total de 3)
  • Vous devez être connecté pour répondre à ce sujet.