web-dev-qa-db-ja.com

エラー "file_get_contentsがファイルfunctions.phpで見つかりました"を修正するには?

私はワードプレスのテーマを構築しています、私はファイナライズのステップに到達します。

今は、テーマチェックで発生したエラーを修正するのに苦労しています。

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を使用する方法を見つけることができませんでした。

誰かがすでにこの問題に直面していますか?

ありがとう。

2
user3415011

外部スタイルシートを追加するには:

一般的に言って、あなたはあなたのテーマに外部スタイルシートを追加するために 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関数を使用して追加してください。

2
Fayaz

あなたはあなたの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
Nathan Johnson