Custom CSS In Uploads Folder

时间:2018-04-19 作者:Summer Developer

我想知道上传文件夹中是否有自定义CSS文件。

我从以前的开发人员那里继承了一个自定义主题,前端的大量样式都是从这个样式表派生出来的,它同样不在主题或插件文件夹中,而是wp-content/uploads 文件夹我正在努力找出它是如何推导出来的,但它确实存在。

这是否被视为不良做法,或者是否有这样的用例?

我相信之前的开发人员提到了Visual Composer或JS Composer以及编译更少的文件。。。但我对此不确定,他已经失去了联系,我想知道为什么我们要以这种方式使用样式表,因此这个问题是关于最佳实践的,以及为什么像Visual Composer这样的插件会将CSS放在那里。。。我也不知道它是如何从这个插件派生出来的,因为当我进入Visual Composer的自定义CSS功能时,样式表似乎是空的。正在讨论的样式表也被缩小了,而其他样式则没有。。。

2 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

如果主题是基于主题选项生成CSS,那么它可能会选择这样做。说你的主题可以让你选择“原色”。它可能想用这种颜色设计许多元素。要做到这一点,它需要输出CSS,并用您选择的颜色替换某些值。

如果是少量CSS,则主题可能会在每次加载时动态生成它,只需在标题中输出CSS,并使用PHP标记输出值。或者,它可以在保存设置时将这些值替换为一些CSS,并将结果保存到数据库中。然后,它可能只输出头中保存的CSS。

如果有大量CSS,那么动态生成可能需要太长时间,或者占用数据库中太多空间。因此,将其另存为文件可能更有意义。这不是一件不合理的事情。

因此,是的,这有一个用例,我不会将其描述为“糟糕的做法”。

因为你说的少了。LESS是一个CSS预处理器,例如,它允许您编写包含变量的CSS。所以@primary 任何你想使用一种叫做“原色”的特殊颜色的地方。

主题可以使用PHP LESS库来处理这样的较少文件,但可以用数据库中设置的值替换变量。处理完更少的内容后,主题可以将结果保存为CSS文件(可能缩小),并将其排队以加载样式。

至于为什么它在上传目录中?这是因为它是WordPress中唯一一个可以保证插件有写入权限的地方。

SO网友:zara
function my_custom_css() {
    $upload_dir = wp_upload_dir(); 
    $base_dir = wp_get_upload_dir(); 
    $styles = wp_get_custom_css();
    if ( $styles || is_customize_preview() ) :
        $type_attr = current_theme_supports( \'html5\', \'style\' ) ? \'\' : \' type="text/css"\';

        $file = file_put_contents($upload_dir[\'basedir\']."/new-style-function.css", strip_tags( $styles ) );
        move_uploaded_file($file, $upload_dir[\'baseurl\']);

    endif;
}

add_action( \'save_post\', \'my_custom_css\' );

$upload_path = wp_upload_dir(); 
wp_enqueue_style (\'custom-style\',$upload_path[\'baseurl\'] .\'/new-style-function.css\');

remove_action(\'wp_head\', \'wp_custom_css_cb\', 101);
结束