web-dev-qa-db-ja.com

子テーマのget_template_directory()をオーバーライドしますか?

私の子供のfunctions.phpファイルでget_template_directory()を置き換えることは可能ですか?

ファイルを変更したいのですが。

/**
* Load Custom Post types file.
*/
require get_template_directory() . '/inc/post-types.php';

テーマを更新するときに、自分の作業を上書きしないことをお勧めします。そのため、親ファイルの登録を解除してから、子のファイルを子の関数ファイルに再登録できますか。

7
Heather

しかし、Wordpress 4.7では、この問題に対処するために2つの新しい機能が導入されました。

get_theme_file_path()(絶対ファイルパスの場合)とget_theme_file_uri()(URLの場合)は、最初にそのファイルの子テーマを自動的に調べ、次に親テーマにフォールバックするという点でget_template_part()と同じように機能します。

あなたの例では、4.7を使って次のように書き直すことができます:

/**
* Load Custom Post types file.
*/
require get_theme_file_path( 'inc/post-types.php' );

ここでより多くの情報: https://make.wordpress.org/core/2016/09/09/new-functions-hooks-and-behaviour-for-theme-developers-in-wordpress-4-7/

15
brianjohnhanna

あなたはあなたの子供のテーマでget_stylesheet_directory_uri()の代わりにget_template_directory()を使う必要があります。

WordPressコーデックスから:

get_template_directory_uri()

子テーマが使用されている場合は、親テーマディレクトリのURIが返されます。 get_template_directory_uri()は、子テーマに含まれる/上書きされることを意図していないリソースに使用する必要があります。 get_stylesheet_directory_uri()を使用して、子テーマに含める/上書きすることを意図したリソースを含めます。

get_stylesheet_directory_uri()

子テーマが使用されている場合、この関数は子のテーマディレクトリURIを返します。子テーマによって上書きされないようにするには、get_template_directory_uri()を使用してください。

9
James Barrett