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