私はフロントページにいるかどうかという条件でwp_enqueue_styleを使ってCSSファイルをインクルードしようとしています。私はこのコードでホームページをテストしています:
if ( is_front_page() ) wp_enqueue_style ('TBDhome', get_template_directory_uri() . '/css/TBDhome.css','all');
私がヘッダーファイルでテストしていてCSSファイルをインクルードしていたとき、それは見つけられました。
この質問は投票されないかもしれませんが - 十分な情報が提供されておらず、他の場所でチュートリアルを見つけるのはかなり簡単なので、私はあなたを手助けします。
テーマのfunctions.php
ファイルでは、これを行う必要があります。
add_action( 'wp_enqueue_scripts', 'wp5849_scripts' );
function wp5849_scripts() {
if ( is_front_page() ) :
wp_enqueue_style('TBDhome', get_stylesheet_directory_uri() . '/css/TBDhome.css');
endif;
}
これが何をしているのか:最初の行add_action
はWordPressの内部セットアップ中のある時点であなたの関数wp5849_scripts()
を実行するためのフックです。アクションフックとフィルタについての詳細は WordPress codex で読むことができます。
2番目の部分は、スタイルシートをエンキューするための実際の機能です。それがサイトのフロントページであるかどうかを確認し、合格した場合はスタイルシートをロードします。
子テーマを使用している場合、get_stylesheet_directory_uri()
は _ parent _ themeディレクトリを返すので、ディレクトリをget_template_directory_uri()
に更新しました。 get_stylesheet_directory_uri()
は、現在アクティブになっているテーマ(親または子)に関係なく機能します。
wp_enqueue_style
here に渡される引数についてもっと読むことができます
注:functions.php
にスクリプトとスタイルをエンキューしている関数が既にあるかもしれません(add_action( 'wp_enqueue_scripts')
フックを探してください)。その場合は、単に追加する必要があります:
if ( is_front_page() ) :
wp_enqueue_style('TBDhome', get_stylesheet_directory_uri() . '/css/TBDhome.css');
endif;
add_action
が呼び出している関数へ。私はこれをオプションとして追加したいと思いました。
編集: OPのコメントに基づいて、より大きなテーマの問題や設定の問題があるようです。これはheader.phpにスタイルシートを配置するオプションです。
if ( is_front_page() ) {
echo '<link rel="stylesheet" id="TBDHome-css" href="' . get_stylesheet_directory_uri() . '/css/TBDhome.css" type='text/css' media='all' />
}
wp
オブジェクトはまだ設定されていないため、is_front_page()
はwpフックの前にfalseを返します。
//* If placed directly in functions.php, this will work
add_action( 'wp', 'wpse_282498_wp' );
function wpse_282498_wp() {
if( is_front_page() ) {
do_something_useful();
}
}
//* If placed directly in functions.php, this will *not* work
if( is_front_page() ) {
//* Because this will never be run
do_something_useful();
}