问题描述
我的 style.php
文件看起来像这样。
<?php header('Content-Type: text/css');?>
#div{
background:<?php echo get_option('bgcolor');?>;
}
这不行,但是当我这样做它是有效的。
<?php header('Content-Type: text/css');?>
#div{
background: <?php echo 'blue';?>;
}
会是什么问题?
这是 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');
这实际上在管理部分。
最佳解决方案
WordPress 功能仅在 WordPress 加载时才可用。如果直接调用 style.php
,则无法使用 WordPress 功能。
为 PHP 驱动样式表加载 WordPress 的一种简单方法是向 WordPress 添加一个端点:一个自定义的保留 URL,您可以在其中加载模板文件。
要到达那里,你必须:
-
使用
add_rewrite_endpoint()
在'init'
上注册端点。我们来命名为'phpstyle'
。 -
挂接到
'request'
中,如果设置端点变量'phpstyle'
不为空。阅读 Christopher Davis 的优秀 A (Mostly) Complete Guide to the WordPress Rewrite API 了解这里发生了什么。 -
钩入
'template_redirect'
并提交您的文件,而不是默认的模板文件index.php
。
为了保持简短,我将以下演示插件中的所有三个简单步骤组合在一个函数中。
插件 PHP 风格
<?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
。
样品 style.php
<?php # -*- coding: utf-8 -*-
header('Content-Type: text/css;charset=utf-8');
print '/* WordPress ' . $GLOBALS['wp_version'] . " */nn";
print get_query_var( 'phpstyle' );
现在访问 yourdomain/phpstyle/
。输出:
/* WordPress 3.3.2 */
default
但是如果你去 yourdomain/phpstyle/blue/
的输出是:
/* WordPress 3.3.2 */
blue
因此,您可以使用端点根据 get_query_var( 'phpstyle' )
的值将一个文件传递给不同的样式表。
警告
这将减慢您的网站。 WordPress 每次访问必须加载两次。不要没有积极的缓存就行。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。