web-dev-qa-db-ja.com

サブフォルダーにいるときにget_template_part()を呼び出すと、get_template_part()が機能しません。

たとえば、次のようなディレクトリがあるとします。

theme
  - subfolder
    - template.php
content-job-listing.php

テンプレートtemplate.phpからget_template_part('content', 'job-listing')のようにget_template_partを呼び出そうとした場合(これは実際の名前ではなく一般的な名前です)、NULLを返します。

同様に、get_template_part('../content', 'job-listing')を使用した場合もテンプレートを返すことができません。しかし、両方が同じディレクトリにある場合、最初のものはうまくいきます。

tのサブフォルダーにいるときにget_template_part()を呼び出しても機能しません。

3
chap

get_template_part()は、あなたがあなたのテーマのどこにいても、どれだけ深くても同じように働きます。それは常にテーマ(または子テーマ)ルートに対する相対を含みます。

だから、あなたがどこからでも以下を呼び出すならば:

get_template_part( 'content', 'job-listing' );

...(順番に)ロードしようとします。

  1. child-theme/content-job-listing.php
  2. parent-theme/content-job-listing.php
  3. child-theme/content.php
  4. parent-theme/content.php

テーマのサブディレクトリにある部分をロードするには、最初の引数にパスを使用するだけです。

get_template_part( 'path/to/file', 'optional-slug' );
6
TheDeadMedic