0

私はウェブページごとにテンプレート部品を作成できるカスタムテーマがあるワードプレスのウェブサイトを持っています。特定のページテンプレート(例:abc.php)が読み込まれたときにbodyタグに特定のクラス(ex:abc)を挿入/挿入したいと思います。header.php特定のWordPressページテンプレートが読み込まれたときにbodyタグに特定のクラス名を挿入できないのはなぜですか?

最初にheader.phpでコードを使用しましたが、機能しませんでした。

<body <?php if (is_page_template('template-parts/page/abc.php')) { body_class('abc'); } else { body_class(); } ?>> 

は、それから私は、 のfunctions.phpに怒鳴るのコードを追加しましたが、それはどちらか動作していません。

add_filter('body_class','abc_class'); 
function abc_class($classes) { 

    if (is_page_template('template-parts/page/abc.php')) { 
     $classes[] = 'abc'; 
    } 

    return $classes; 

} 

ここで間違っていることは分かりません。これをどうすれば解決できますか?

答えて

0

ページテンプレートのためではなく、テンプレート部品のためである私はそれがスラグをとるようにのfunctions.phpに次のように追加することができたとことを注入します特定のページが読み込まれるたびにbodyクラスに渡されます。

add_filter('body_class', function($classes) { 
if (is_page()){ 
    $slug = get_queried_object()->post_name; 
    return array_merge($classes, array($slug)); 
} 
    return $classes; 
}); 
0

すべてis_page_template()関数の最初のように、ファイルの先頭に

/* 
* Template name: Your Super Template 
*/ 

を持っている私が意味する、WPテンプレートのために働く、関数はtrueを返します。このテンプレートを使用して、ページが実際に表示されています。関数body_class()は、各ページテンプレートに固有のクラスを追加するため、カスタムボディクラスを追加する必要はありません:)

第2に、ページテンプレートはテーマディレクトリ自体にも1にもできます2レベルのサブディレクトリ内のレベルのサブディレクトリ、そう

<body <?php if (is_page_template('abc.php')) { body_class('abc'); } else { body_class(); } ?>> 

または

<body <?php if (is_page_template('page-templates/abc.php')) { body_class('abc'); } else { body_class(); } ?>> 

あなたのテンプレート、それは実際にページテンプレートではありませんので、それはテンプレートの部分です。

そうで、二つの言葉で、関数is_page_template()が

関連する問題