WordPress函数仅在加载WordPress时可用。如果你打电话给style.php
不能直接使用WordPress函数。
为PHP驱动的样式表加载WordPress的一种简单方法是向WordPress添加一个端点:一个自定义的保留URL,您可以在其中加载模板文件。
要达到目标,您必须:
在上注册端点\'init\'
具有add_rewrite_endpoint()
. 我们来命名吧\'phpstyle\'
.
钩住\'request\'
并确保端点变量\'phpstyle\'
如果已设置,则不为空。读Christopher Davis的精彩A (Mostly) Complete Guide to the WordPress Rewrite API 了解这里发生了什么。
钩住\'template_redirect\'
并传递您的文件,而不是默认的模板文件index.php
.
为了简短起见,我在下面的演示插件中将所有三个简单步骤组合在一个函数中。
Plugin PHP Style
<?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;
}
安装插件,访问
wp-admin/options-permalink.php
一次刷新重写规则,并添加
style.php
你的主题。
Sample 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\' );
现在访问
yourdomain/phpstyle/
. 输出:
/* WordPress 3.3.2 */
default
但如果你去
yourdomain/phpstyle/blue/
输出为:
/* WordPress 3.3.2 */
blue
因此,根据
get_query_var( \'phpstyle\' )
.
Caveat
这将减慢您的站点速度。必须加载WordPress
two times 每次访问。如果没有积极的缓存,就不要这样做。