Wordpress API y CSS Dinamico

  • Autor Autor NicDam
  • Fecha de inicio Fecha de inicio
N

NicDam

Gamma
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!
 
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...
 
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:
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:
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!
 
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...
 
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!
 
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 😛

Saludos!
 

Temas similares

Atrás
Arriba