web-dev-qa-db-ja.com

子テーマ関数ファイルにファイルを含む

通常、私のテーマ関数ファイルでは、物事をきれいに保つために他のファイルが必要になります。

require_once("foo.php");

今子供のテーマで作業している私も同じことをしたいのですが。カスタム管理オプションを追加していますが、コードを含めることは不可能です。正しいファイルを呼び出していることと、正しいファイルを呼び出していることを確認するためにパスをエコーアウトしましたが、そのファイル内では実行されていないようです。子テーマ関数ファイル内に配置した場合、コードは正常に実行されます。

8
curtismchale

子テーマは親テーマをディレクトリ名で参照し、通常のインストールではすべてのテーマはwp-content/themes/に存在するので、それらのテーマを相対パスで参照するのがいいと思います。

include '../parent-theme/some-file.php';

それがあなたを不快にさせるのであれば、 tt-child と呼ばれる 20 - childというテーマを持つWordPress 3.0.1の以下の定数を守ってください。

TEMPLATEPATH     /home/adam/public_html/wp3/wp-content/themes/twentyten
STYLESHEETPATH   /home/adam/public_html/wp3/wp-content/themes/tt-child

したがって、親テーマのディレクトリを参照するために、子テーマで次の操作を実行できます。

include TEMPLATEPATH . '/some-file.php';
12

子供のテーマでは正しい方法は

require_once( get_stylesheet_directory() . 'foo.php');

親テーマにいる間、あなたはまだ使うことができます

require_once ( get_template_directory() . 'foo.php' );

get_template_directory()はまだ子テーマで機能し、残念ながら親テーマディレクトリをターゲットにします。あなたの場合は便利です

10
Christian

あなたは間違いなくURLをハードコードしたくないでしょう。その正しいやり方は

require_once( get_stylesheet_directory(). '/my_included_file.php' );

Wordpressのコーデックスで詳細情報を参照してください

今、あなたのインクルードを含むheader.phpを修正するには、次のように参照します。

require_once( get_stylesheet_directory() . '/../parenthteme/my_included_file.php' );
2
Marlyse Comte

<?php get_template_part( 'name-the-page-here' ); ?>を使用してください。拡張子.phpがない

2
Everaldo Matias

こんにちは @curtismchale

これが正しいかどうかわからないが、foo.phpの前後に引用符を含める必要があります。

require_once('foo.php');

それはあなたの問題を解決しますか?

2
MikeSchinkel

私はこれがあなたの子供のテーマパスを取得するための最良の方法だと思います

<?php $get_my_path = dirname( get_bloginfo('stylesheet_url') ); ?>
<?php require_once( $get_my_path. '/my_included_file.php' ); ?>

からアイデアを得るhttp://dynamicweblab.com/2013/02/get-template-path-in-wordpress-child-themes/

0
Maidul

functions.phpにインクルードすることは完全に可能で正常です。

私は私の子供のテーマでこれをやります(phpはコードのサブディレクトリです):

include 'php/core.php';

明白な理由もなく問題がある場合はwp-config.phpでデバッグモードを有効にしてみてください。

define('WP_DEBUG', true);

関連するエラーが発生している可能性がありますが、表示されません。

0
Rarst