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


8

通常、テーマ関数ファイルでは、適切な状態を保つために他のファイルが必要になります。

require_once("foo.php");

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


正確に何をしているかを示すために、コードをもう少し投稿していただけませんか?
MikeSchinkel、

回答:


13

子テーマは親テーマをディレクトリ名で参照し、通常のインストールではすべてのテーマがwp-content/themes/に存在するため、相対パスでこれらのテーマを参照しても問題ありません。

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

それがあなたを不快にさせるなら、私はWordPress 3.0.1でtt-childという20の子テーマを持つ以下の定数を観察します。

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';

定数STYLESHEETPATHは私が探していたものです。使用する場合は、子テーマでの作業が含まれます。
curtismchale、

ハードコードされたパスの使用を検討できることを本当に驚いています...テーマは1つの環境でのみ機能するとは限りません。get_template_directory()が存在しない場合は理解できましたが、存在します。2010年の質問です。笑
クリスチャン

一番上のオプションは私にはうまくいきませんでした。親ファイルへの正しい相対パスが確かにあったのはなぜかはわかりません。2番目のオプションは私のために働いたので、ありがとう。
Bowlerae

12

子供のテーマでは適切な方法は

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

親テーマを使用している間も引き続き使用できます

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

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


1
'/'を使用する必要がありました。例:require_once(get_stylesheet_directory()。 '/foo.php');
ssaltman

@ssaltmanに感謝します。あなたは正しい、ドキュメントはそれを確認します:developer.wordpress.org/reference/functions/…私は私の答えを編集しました
クリスチャン

2

こんにちは@curtismchale

これであるかどうかはわかりませんがfoo.php、次のように引用符をで囲む必要があります。

require_once('foo.php');

それで問題は解決しましたか?


いいメモ。ここで見逃しましたが、子供のテーマでした。
curtismchale


2

あなたは間違いなくURLをハードコーディングしたくありません。そうする適切な方法は

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

Wordpress Codexで詳細を見る

ここで、インクルードを持つheader.phpを変更する場合は、次のように参照します。

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

0

に含めることは完全に可能であり、通常のことですfunctions.php

私は子テーマで次のようにします(phpコードのサブディレクトリです):

include 'php/core.php';

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

define('WP_DEBUG', true);

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


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.