wake-up-neo.com

Wie kann man den Fehler "file_get_contents wurde in der Datei functions.php gefunden" beheben?

Ich baue ein WordPress-Thema auf und bin im Endstadium.

Im Moment habe ich Probleme, einen von Theme Check ausgelösten Fehler zu beheben:

file_get_contents wurde in der Datei functions.php gefunden. Dateivorgänge sollten die WP_Filesystem-Methoden anstelle von direkten PHP Dateisystem-Aufrufen verwenden.

Hier der Code:

function theme_critical() {
  $critical_css = file_get_contents( get_template_directory() . '/css/critical.css');
  echo '<style>' . $critical_css . '</style>';
}

Grundsätzlich übernimmt dieser Code den Inhalt einer CSS-Datei, um ihn in der Kopfzeile auszudrucken. Dies ist ein kritischer CSS.

Ich habe gesucht, aber ich konnte keine Möglichkeit finden, WP_filesystem zu verwenden, um einfach dasselbe zu erreichen wie file_get_content.

Ist jemand schon mit diesem Problem konfrontiert?

Vielen Dank.

3
user3415011

So fügen Sie ein externes Atylesheet hinzu:

Im Allgemeinen sollten Sie die Funktion wp_enqueue_style() verwenden, um Ihrem Thema ein externes Stylesheet hinzuzufügen.

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' );

So fügen Sie ein internes Stylesheet hinzu:

Wenn Sie jedoch (aus welchem ​​Grund auch immer) ein internes Stylesheet hinzufügen müssen (d. H. Die gesamte CSS-Datei innerhalb des HTML-Tags <head> mithilfe des Tags <style> drucken müssen), können Sie inclue_once wie folgt verwenden:

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>';
}

Dies erzeugt keine Warnung in theme check . Obwohl ich das nicht empfehlen würde. Wenn Sie auf diese Weise benutzerdefiniertes CSS hinzufügen möchten, sollten Sie es mit den Optionen des Customizer-Themas in der Datenbank speichern und dann mit der Funktion wp_add_inline_style zusammen mit der Haupt-CSS-Datei Ihres Themas hinzufügen.

2
Fayaz

Sie sollten Ihre CSS-Stile nicht im <head> wiedergeben. Sie sollten wp_enqueue_style() verwenden

Füge so etwas zu deiner functions.php-Datei hinzu:

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
Nathan Johnson