私はワードプレスのテーマを構築しています、私はファイナライズのステップに到達します。
今は、テーマチェックで発生したエラーを修正するのに苦労しています。
file_get_contentsがファイルfunctions.phpに見つかりましたファイル操作は直接PHPファイルシステム呼び出しの代わりにWP_Filesystemメソッドを使うべきです。
ここでのコード:
function theme_critical() {
$critical_css = file_get_contents( get_template_directory() . '/css/critical.css');
echo '<style>' . $critical_css . '</style>';
}
基本的に、このコードはCSSファイルの内容を受け取り、それをヘッダーに印刷します。これは重要なCSSです。
私は検索しましたが、file_get_contentと同じ方法でWP_filesystemを使用する方法を見つけることができませんでした。
誰かがすでにこの問題に直面していますか?
ありがとう。
一般的に言って、あなたはあなたのテーマに外部スタイルシートを追加するために 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のファイル全体を<head>
タグを使用してHTMLの<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を追加する場合は、カスタマイザテーマオプションを使用してデータベースに保存してから、テーマのメインCSSファイルとともにwp_add_inline_style
関数を使用して追加してください。
あなたはあなたの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' );
}