Как исправить ошибку "содержимое файла get было найдено в файле functions.php "?
Я создаю тему WordPress, я достигаю этапа завершения.
Прямо сейчас я изо всех сил пытаюсь исправить ошибку, вызванную проверкой темы,:
В файле был найден Файл_гет_контентов functions.php Операции с файлами следует использовать методы WP_Filesystem вместо прямых вызовов файловой системы PHP.
Вот код:
function theme_critical() {
$critical_css = file_get_contents( get_template_directory() . '/css/critical.css');
echo '<style>' . $critical_css . '</style>';
}
В основном, этот код берет содержимое CSS-файла, чтобы напечатать его в заголовке. Это критический момент CSS.
Я искал, но не смог найти способ использовать WP_Filesystem просто для того же, что и file_get_content.
Кто-нибудь уже сталкивался с этой проблемой?
Спасибо.
2 answers
Чтобы Добавить Внешнюю Таблицу:
Вообще говоря, вы должны использовать 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' );
Чтобы Добавить Внутреннюю Таблицу Стилей:
Однако, если (по какой-либо причине) вам необходимо добавить внутреннюю таблицу стилей (т.Е. Распечатать весь CSS-файл в теге HTML <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 таким образом, вам лучше сохранить его в базе данных с настройщиком параметров темы, а затем добавить его с помощью функции wp_add_inline_style
вместе с основным CSS-файлом вашей темы.
Вы не должны повторять свои стили CSS в <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' );
}