Как исправить ошибку "содержимое файла 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.

Кто-нибудь уже сталкивался с этой проблемой?

Спасибо.

Author: user3415011, 2017-03-10

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-файлом вашей темы.

 2
Author: Fayaz, 2020-06-15 08:21:38

Вы не должны повторять свои стили 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' );
}
 0
Author: Nathan Johnson, 2017-03-12 18:52:31