如何修复FILE_GET_CONTENTS在FILE Functions.php中找到的错误?

时间:2017-03-10 作者:user3415011

我正在构建一个wordpress主题,我达到了最终确定的步骤。

现在,我正在努力修复主题检查引发的错误:

在文件函数中找到file\\u get\\u内容。php文件操作应使用WP\\U文件系统方法,而不是直接调用php文件系统。

代码如下:

function theme_critical() {
  $critical_css = file_get_contents( get_template_directory() . \'/css/critical.css\');
  echo \'<style>\' . $critical_css . \'</style>\';
}
基本上,这段代码获取CSS文件的内容,并将其打印在标题中。这是一个关键的css。

我进行了搜索,但找不到一种方法可以使用WP\\u文件系统来实现与file\\u get\\u内容相同的功能。

是否有人已经面临这个问题?

谢谢

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

要添加外部Atylesheet:

一般来说,您应该使用wp_enqueue_style() 函数向主题添加外部样式表。

function wpse259600_add_style() {
    wp_enqueue_style( \'theme_critical\', get_template_directory_uri() . \'/css/critical.css\', array(), \'1.0.0\' );
}
add_action( \'wp_enqueue_scripts\', \'wpse259600_add_style\' );
添加内部样式表:但是,如果(出于任何原因)必须添加内部样式表(即在HTML中打印整个CSS文件<head> 使用标记<style> 标签),然后您可以使用inclue_once 如下所示:

add_action( \'wp_head\', \'wpse259600_internal_css_print\' );
function wpse259600_internal_css_print() {
    echo \'<style type="text/css">\';
    // this will also allow you to use PHP to create dynamic css rules
    include_once get_template_directory() . \'/css/critical.css\';
    echo \'</style>\';
}
这不会在中生成警告theme check. 尽管如此,我不建议这样做。如果要以这种方式添加自定义CSS,最好使用customizer主题选项将其保存到数据库中,然后使用wp_add_inline_style 与主题的主CSS文件一起使用。

SO网友:Nathan Johnson

你不应该在<head>. 您应该使用wp_enqueue_style()

在您的functions.php 文件:

add_action( \'wp_enqueue_scripts\', \'wpse_259600_enqueue_scripts\' );
function wpse_259600_enqueue_scripts() {
  wp_enqueue_style( \'mytheme-critical\', get_template_directory_uri() . \'/css/critical.css\' );
}

相关推荐