Tengo mi style.php
archivo con este aspecto.
<?php header('Content-Type: text/css');?>
#div{
background:<?php echo get_option('bgcolor');?>;
}
Esto no funciona, pero cuando hago esto funciona.
<?php header('Content-Type: text/css');?>
#div{
background: <?php echo 'blue';?>;
}
¿Cuál sería el problema?
Este es el mainfile.php
<?php
function test(){
global get_option('bgcolor');?>
<input type="text" id="bgcolor" name="post_popup_settings[bgcolor]" value="<?php echo get_option('bgcolor');?> " />
<?php
}
add_action('admin_head','test');
Esto está realmente en la sección de administración.
style.php
. Si WordPress no llama al archivo de estilo, no hay función de WordPress disponible.Respuestas:
Las funciones de WordPress están disponibles solo si WordPress está cargado. Si llama
style.php
directamente, no puede usar una función de WordPress.Una forma sencilla de cargar WordPress para su hoja de estilo controlada por PHP es agregar un punto final a WordPress: una URL personalizada y reservada donde carga su archivo de plantilla.
Para llegar hay que:
Registre un punto final
'init'
conadd_rewrite_endpoint()
. Vamos a nombrarlo'phpstyle'
.Conéctese
'request'
y asegúrese de que la variable de punto final'phpstyle'
no esté vacía si está configurada. Lea la excelente Guía completa de Christopher Davis (principalmente) de la API de reescritura de WordPress para comprender lo que está sucediendo aquí.Conéctese
'template_redirect'
y entregue su archivo en lugar del archivo de plantilla predeterminadoindex.php
.Para mantener las cosas cortas, combiné los tres pasos simples en una función en el siguiente complemento de demostración.
Plugin PHP Style
Instale el complemento, visite
wp-admin/options-permalink.php
una vez para actualizar las reglas de reescritura y agregue unstyle.php
a su tema.Muestra
style.php
Ahora visita
yourdomain/phpstyle/
. Salida:Pero si vas a
yourdomain/phpstyle/blue/
la salida es:Por lo tanto, puede usar el punto final para entregar diferentes hojas de estilo con un archivo dependiendo del valor de
get_query_var( 'phpstyle' )
.Advertencia
Esto ralentizará su sitio. WordPress tiene que cargarse dos veces por cada visita. No lo hagas sin un almacenamiento en caché agresivo.
fuente
get_query_var( 'phpstyle' ) AND ! defined( 'SHORTINIT' ) AND define( 'SHORTINIT', true )
acelerar las cosas ... y si entonces todas las funciones necesarias están disponibles ...Puede hacer esto cargando la salida a través de
admin-ajax.php
, pero un mejor enfoque para eso es usar laSHORTINIT
constante de WordPress para que pueda cargar las funciones que necesita, pero necesitará encontrar y cargarwp-load.php
para hacer esto:En este punto se necesita para asegurarse de incluir cualquier otro
wp-includes
archivos que necesita para obtener sus opciones de tema - que variarán dependiendo de su forma va a guardar y acceder así a los. (Probablemente necesitará agregar más a esta lista para que no obtenga errores fatales, pero a medida que avanza, los errores fatales le indicarán qué archivos debe agregar).Luego, una vez que tenga todas las funciones que necesita, puede generar el CSS utilizando esas funciones ... por ejemplo.
Luego puede poner en cola el archivo de la forma habitual, por ejemplo:
fuente
../../
en elwp-load.php
camino, la función dada lo encontrará por usted tal como está ... pero como dije, necesita encontrar e incluir cualquier archivo que necesite que tenga las funciones que está utilizando, por ejemplo.get_background_image
está entheme.php
etc ... a medida que agrega al CSS puede que necesite más, por lo que deberá aprender cómo encontrarlos para usar este método de manera efectiva y confiable.