Wordpress API y CSS Dinamico

Desde
3 Feb 2010
Mensajes
377
Hola como andan?

Bueno les queria consultar por una tema que estoy haciendo para Wordpress usando la API.

Cree la seccion de Theme Options correctamente y en una de las secciones (seccion "colores"), incluyo unos color pickers para poder customizar los colores del tema. Esos colores se guardan en la base de datos como HexCode.

Esos datos los llamo desde un archivo .php (dynamic.css.php) y quiero generar un archivo .css dinamicamente que se actualice cada vez que se cambien los valores de la seccion de los colores y no las demas.

Ese es el problema, como puedo hacer para generar dinamicamente el .css? O como hago para verificar que se actualizaron los datos de la seccion "colores"?

Encontre esta funcion
PHP:
$ss_dir = get_stylesheet_directory(); // Shorten code, save 1 call
ob_start(); // Capture all output (output buffering)
require($ss_dir . '/css/dynamic.css.php'); // Generate CSS
$css = ob_get_clean(); // Get generated CSS (output buffering)
file_put_contents($ss_dir . '/css/static.css', $css, LOCK_EX); // Save it

pero genera un .css cada vez que se carga una pagina de la administracion.

Aclaro que no quiero agregar los estilos al <head> porque no me gusta.

Tambien acepto otros puntos de vista!

Saludos!
 

Cicklow

Admin
Dseda
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
1.101
Hola como andan?

Bueno les queria consultar por una tema que estoy haciendo para Wordpress usando la API.

Cree la seccion de Theme Options correctamente y en una de las secciones (seccion "colores"), incluyo unos color pickers para poder customizar los colores del tema. Esos colores se guardan en la base de datos como HexCode.

Esos datos los llamo desde un archivo .php (dynamic.css.php) y quiero generar un archivo .css dinamicamente que se actualice cada vez que se cambien los valores de la seccion de los colores y no las demas.

Ese es el problema, como puedo hacer para generar dinamicamente el .css? O como hago para verificar que se actualizaron los datos de la seccion "colores"?

Encontre esta funcion
PHP:
$ss_dir = get_stylesheet_directory(); // Shorten code, save 1 call
ob_start(); // Capture all output (output buffering)
require($ss_dir . '/css/dynamic.css.php'); // Generate CSS
$css = ob_get_clean(); // Get generated CSS (output buffering)
file_put_contents($ss_dir . '/css/static.css', $css, LOCK_EX); // Save it

pero genera un .css cada vez que se carga una pagina de la administracion.

Aclaro que no quiero agregar los estilos al <head> porque no me gusta.

Tambien acepto otros puntos de vista!

Saludos!

1- tenes un CSS template ejemplo: color ##COLOR1##...
2- abris ese CSS file_get_contents reemplazas el ##COLOR1## por el color necesario (y todos los otros colores)
3- usas file_put_contents para guardar ese CSS...

Yo la forma que uso es en el header le paso los colores al CSS usando un file php... ejemplo
PHP:
	<link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/colores.php?color1=<?=$op['color1'];?>&" type="text/css" media="screen, projection" />

Y el css+php tiene que tener una cabezera de CSS sino no te los toma...
PHP:
<?php
	header("Content-Type: text/css;X-Content-Type-Options: nosniff;");
?>
#menutop{
	height:33px;
	float:none;
	clear: both;
	width:100%;
	background-color:<?php echo strip_tags($_GET['color1']); ?>;
}

De esa forma pasas los colores a un CSS+PHP...
 

hasdpk

Delta
Programador
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
30 Abr 2013
Mensajes
601
Lo que yo haría sería crear varias hojas de estilos para cada color schema he invocarlos dependiendo de la elección del usuario en el head, o sea:

PHP:
<head>
        <?php if ( $colorSchema == 'blue' ) ?>
                <style type="text/css" src="./blue.css" />
        <?php elseif ( $colorSchema == 'red' ) ?>
                <style type="text/css" src="./red.css" />
        <?php else ?>
                <style type="text/css" src="./default.css" />
</head>
 
Última edición:
U

Usuario eliminado 44716

A forma bruta también podrías hacer lo siguiente que cumpliría eso que quieres exactamente:

- Obtienes opciones del CSS cuando se actualiza.
- Con PHP creas un txt con la estructura propia de una hoja de estilos.
- Eliminas archivo de CSS anterior.
- Renombras el archivo txt cambiándole únicamente la extensión de .txt a .css
- Si lo necesitas PHP también dispone de opciones para mover los archivos de lugar.

Saludos.

Hola como andan?

Bueno les queria consultar por una tema que estoy haciendo para Wordpress usando la API.

Cree la seccion de Theme Options correctamente y en una de las secciones (seccion "colores"), incluyo unos color pickers para poder customizar los colores del tema. Esos colores se guardan en la base de datos como HexCode.

Esos datos los llamo desde un archivo .php (dynamic.css.php) y quiero generar un archivo .css dinamicamente que se actualice cada vez que se cambien los valores de la seccion de los colores y no las demas.

Ese es el problema, como puedo hacer para generar dinamicamente el .css? O como hago para verificar que se actualizaron los datos de la seccion "colores"?

Encontre esta funcion
PHP:
$ss_dir = get_stylesheet_directory(); // Shorten code, save 1 call
ob_start(); // Capture all output (output buffering)
require($ss_dir . '/css/dynamic.css.php'); // Generate CSS
$css = ob_get_clean(); // Get generated CSS (output buffering)
file_put_contents($ss_dir . '/css/static.css', $css, LOCK_EX); // Save it

pero genera un .css cada vez que se carga una pagina de la administracion.

Aclaro que no quiero agregar los estilos al <head> porque no me gusta.

Tambien acepto otros puntos de vista!

Saludos!
 
Última edición por un moderador:

NicDam

Gamma
Desde
3 Feb 2010
Mensajes
377
Hola, gracias a todos por sus respuestas
[MENTION=43330]hasdpk[/MENTION] tu solucion no la puedo implementar porque al ser "infinitos" css (porque cada sitio tendria el suyo) deberia incluir miles de plantillas con miles de variantes.
[MENTION=9679]cicklow[/MENTION] y si tengo que pasar mas de una variable, es decir mas de un color?
[MENTION=44716]albertofdb[/MENTION]: Me gusto tu idea y es basicamente lo que tenia en mente. En realidad solo tenia un .php el cual generaban un .css cuando se actualizaban las opciones (eso lo hacia con el codigo que puse en mi primer post). El problema es que no se como hacer el paso 1 porque la API de WP usa register_setting y ahi no se como verificar que se haya realizado la actualizacion de datos en la BD.

Saludos!
 

Cicklow

Admin
Dseda
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
1.101
Hola, gracias a todos por sus respuestas
[MENTION=43330]hasdpk[/MENTION] tu solucion no la puedo implementar porque al ser "infinitos" css (porque cada sitio tendria el suyo) deberia incluir miles de plantillas con miles de variantes.
[MENTION=9679]cicklow[/MENTION] y si tengo que pasar mas de una variable, es decir mas de un color?
[MENTION=44716]albertofdb[/MENTION]: Me gusto tu idea y es basicamente lo que tenia en mente. En realidad solo tenia un .php el cual generaban un .css cuando se actualizaban las opciones (eso lo hacia con el codigo que puse en mi primer post). El problema es que no se como hacer el paso 1 porque la API de WP usa register_setting y ahi no se como verificar que se haya realizado la actualizacion de datos en la BD.

Saludos!

PHP:
<link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/colores.php?color1=<?=$op['color1'];?>&color2=<?=$op['color2'];?>" type="text/css" media="screen, projection" />

y asi infinitamente...
 
U

Usuario eliminado 44716

Para generar el CSS de forma instantánea a cuando se actualizan las opciones de tu theme debes incluir las funciones de PHP en el mismo archivo que te guarda el contenido en la base de datos, así cuando se vaya a almacenar también se genera la hoja de estilos a la vez.

La otra forma es un poco más enredada y menos práctica. Crearías un archivo PHP que hiciera únicamente lo que te dije anteriormente y este archivo lo enlazas con un cron job y listo.

Hola, gracias a todos por sus respuestas
[MENTION=43330]hasdpk[/MENTION] tu solucion no la puedo implementar porque al ser "infinitos" css (porque cada sitio tendria el suyo) deberia incluir miles de plantillas con miles de variantes.
[MENTION=9679]cicklow[/MENTION] y si tengo que pasar mas de una variable, es decir mas de un color?
[MENTION=44716]albertofdb[/MENTION]: Me gusto tu idea y es basicamente lo que tenia en mente. En realidad solo tenia un .php el cual generaban un .css cuando se actualizaban las opciones (eso lo hacia con el codigo que puse en mi primer post). El problema es que no se como hacer el paso 1 porque la API de WP usa register_setting y ahi no se como verificar que se haya realizado la actualizacion de datos en la BD.

Saludos!
 

NicDam

Gamma
Desde
3 Feb 2010
Mensajes
377
Gracias a todos por sus respuestas, ya pude solucionar mi problema con el codigo que habia puesto mas arriba. Se ve que lo estaba enganchando en el lugar incorrecto :p

Saludos!
 
Arriba