我在大多数高级WordPress主题中都看到过, 允许后端用户更改CSS属性, 例如背景色, 字体颜色, 字体家族, 而仅使用某些UI元素与后端一起使用。
外观部分上有一个颜色选择器, 用户可以更改特定元素的颜色并将其保存。
我正在构建一个小的wordpress主题, 我希望用户也可以通过这种方式更改CSS值。
那么, 这是怎么做的呢?
它类似于文件写入吗?还是动态的? (将CSS存储在数据库中吗?)
【使用WordPress后端UI元素更改CSS值】谢谢!
#1你有几种使用数据库值的方法:
a)将它们作为内联样式回显
<
body style="background:<
?php echo get_option('body_background');
?>
">
b)在< head> 标签内将它们作为样式规则回显:
<
head>
<
style>
body {background:<
?php echo get_option('body_background');
?>
}
<
/style>
<
/head>
C)使用PHP生成动态样式表(这是可取的, 因为该文件可以缓存, 也可以压缩):
style.php:
<
?php
header("Content-type: text/css;
charset: UTF-8");
define('WP_USE_THEMES', false);
require('path/to/wp-load.php');
// Located in the root of WordPress
?>
body {background:<
?php echo get_option('body_background');
?>
}
header.php:
<
head>
<
link href="http://www.srcmini.com/style.php" rel="stylesheet" type="text/css" />
<
/head>
编辑(2016年3月)
我最终创建了wp-dynamic-css:一个允许你从动态内容生成CSS的库, 我相信这对你非常有用。这是可以使用的方式:
// 1. Load the library
require_once 'wp-dynamic-css/bootstrap.php';
// 2. Set the callback function (used to convert variables to actual values)
function my_dynamic_css_callback( $var_name )
{
return get_theme_mod($var_name);
}
wp_dynamic_css_set_callback( 'my_dynamic_css_callback' );
// 3. Enqueue the stylesheet (using an absolute path, not URL)
wp_dynamic_css_enqueue( 'path/to/my-style.css' );
现在, 假设你有一个名为my-style.css的文件, 其代码如下:
body {
background-color: $body_bg_color;
}
例如, 如果调用get_theme_mod(‘ body_bg_color’ )返回值#fff, 则my-style.css将被编译为:
body {
background-color: #fff;
}
这将被打印到文档< head> 。这种方法的好处是, 在定制程序中所做的任何更改都会立即更新, 以显示更改实时生效。
#2一种解决方法是将CSS设置设置为嵌入式样式。内联样式始终会覆盖任何内部或外部样式表, 同时, 如果不存在任何内联样式, 则可以让这些样式表提供默认样式。
假设你正在使用设置API(https://codex.wordpress.org/Settings_API)创建自定义设置, 那么它就是这样工作的。
获取设置:
//Get the group of options named custom_css_settings, registered using register_setting()
//These are of course example names and could be anything
$custom_css = get_option('custom_css_settings');
//Get the CSS-option for the element named body
$custom_css_body_bg = $custom_css['body_bg'];
将CSS应用于例如body-tag作为内联CSS(如果已设置):
//If its set, use the setting - if not print the <
body>
tag without styling
($custom_css_body_bg) ? "<
body style='background:" . $custom_css_body_bg . ";
'" : "<
body>
" ;
#3当在WordPress中创建动态CSS文件时, 你可能需要对其进行一些调整。根据CSS Tricks, 最简单的方法是将其添加到你的style.php中:
<
?php
$absolute_path = explode('wp-content', $_SERVER['SCRIPT_FILENAME']);
$wp_load = $absolute_path[0] . 'wp-load.php';
require_once($wp_load);
/**
Do stuff like connect to WP database and grab user set values, like:
?>
body {background:<
?php echo get_option('body_background');
*/header('Content-type: text/css');
header('Cache-control: must-revalidate');
?>
下一个替代方法是” ..保留名为style.css的文件, 并使用.htaccess将其解析为PHP。只需确保此代码位于.htaccess文件(仅适用于Apache服务器)中, 并且与CSS文件位于同一目录级别然后在其中使用PHP, 就像在其他任何PHP文件中一样。”
资料来源:https://css-tricks.com/css-variables-with-php/
推荐阅读
- 更改WordPress发布列表的布局
- 导入WordPress主题单元测试数据时,无法解决”超出最大执行时间”错误
- add_theme_support在functions.php上不起作用
- 在自定义帖子类型中添加链接
- 将背景图像添加到Jupiter 4 WordPress主题标头
- windows下的pycharm配置 linux环境
- day1-python简介+安装
- python 调用zabbix api实现查询主机信息,输出所有主机ip
- 调用zabbix 分组api