Las funciones de WordPress están disponibles solo si WordPress está cargado. Si llama directamente a su style.php
, no puede usar una función de WordPress.
Una forma sencilla de cargar WordPress para su hoja de estilo impulsada por PHP es agregar un punto final a WordPress: una URL reservada y personalizada donde carga su archivo de plantilla.
Para llegar allí tienes que:
-
Registre un punto final en 'init'
con add_rewrite_endpoint()
. Llamémoslo 'phpstyle'
.
-
Enganche en 'request'
y asegúrese de que la variable de punto final 'phpstyle'
no esté vacía si está establecida. Lea la excelente de Christopher Davis Una guía completa (principalmente) de la API de WordPress Rewrite para entender lo que está pasando aquí.
-
Enganche en 'template_redirect'
y entrega tu archivo en lugar de la plantilla predeterminada index.php
.
Para abreviar, combiné los tres pasos simples en la función uno en el siguiente complemento de demostración.
Estilo PHP del complemento
<?php # -*- coding: utf-8 -*-
/*
* Plugin Name: PHP Style
* Description: Make your theme's 'style.php' available at '/phpstyle/'.
*/
add_action( 'init', 'wpse_54583_php_style' );
add_action( 'template_redirect', 'wpse_54583_php_style' );
add_filter( 'request', 'wpse_54583_php_style' );
function wpse_54583_php_style( $vars = '' )
{
$hook = current_filter();
// load 'style.php' from the current theme.
'template_redirect' === $hook
&& get_query_var( 'phpstyle' )
&& locate_template( 'style.php', TRUE, TRUE )
&& exit;
// Add a rewrite rule.
'init' === $hook && add_rewrite_endpoint( 'phpstyle', EP_ROOT );
// Make sure the variable is not empty.
'request' === $hook
&& isset ( $vars['phpstyle'] )
&& empty ( $vars['phpstyle'] )
&& $vars['phpstyle'] = 'default';
return $vars;
}
Instala el complemento, visita wp-admin/options-permalink.php
una vez para actualizar las reglas de reescritura y agrega un style.php
a tu tema.
Muestra style.php
<?php # -*- coding: utf-8 -*-
header('Content-Type: text/css;charset=utf-8');
print '/* WordPress ' . $GLOBALS['wp_version'] . " */\n\n";
print get_query_var( 'phpstyle' );
Ahora visita yourdomain/phpstyle/
. Salida:
/* WordPress 3.3.2 */
default
Pero si vas a yourdomain/phpstyle/blue/
la salida es:
/* WordPress 3.3.2 */
blue
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' )
.
Caveat
Esto ralentizará su sitio. WordPress se debe cargar dos veces para cada visita. No lo hagas sin un almacenamiento en caché agresivo.