私のテンプレートファイルにはライブラリを含めたいのです。ライブラリを自分のテーマフォルダにアップロードしました。テーマフォルダの中にカスタムテンプレートファイルがあります。私のカスタムテンプレートファイルにはrequire 'OAuth2/Client.php';
がありますが、そのテンプレートを使用するページを読み込むと、次のようになります。
Warning:require(OAuth2/Client.php):ストリームを開けませんでした:4行目の/home/healthf0/public_html/wp-content/themes/healthfitcorpwell/single-iframe.phpにそのようなファイルまたはディレクトリはありません
明らかにファイルは存在します、私はそれがFTPを通してそこに座っているのを見ることができます。それはなぜ私にこれを言っているのですか?
相対パスでファイルをrequire
しているので、このエラーが発生しています。 @ Mark Kapulunがコメントで指摘しているように、ファイルをrequire
ingするときは相対パスを使用しないでください。代わりに、明示的になり、絶対パスを使用したいです。
get_template_directory() を使用して、
現在のテーマのディレクトリへの絶対パス(末尾のスラッシュなし)
テンプレートファイルでは、requireステートメントは次のようになります。
require( get_template_directory() . '/path/from/theme/root/to/file.php');
あなたが子供のテーマを作っているのであればget_stylesheet_directory()
。 doc
更新:
@Jack Johanssonが彼の答えで述べたように、代わりにrequire_once
を使うことを検討するかもしれません。これにより、ファイルを複数含めることによって発生するエラーからあなたを保護できます。詳しくは この答え をご覧ください。
はい、ただし相対パスの使用は許可されていません。あなたは常に絶対パスが欲しいのです。これは次のようにして行うことができます。
<?php require( get_stylesheet_directory() . '/OAuth2/Client.php'); ?>
get_stylesheet_directory()
は、テーマのstyle.css
がある場所の絶対パスを返します。ただし末尾の/
は付けません。
テンプレートのディレクトリへの絶対パスを取得するためにget_template_directory()
を使うことができます。たとえば、phpファイルが/my-theme/OAuth2/Client.php
にある場合は、次のようにします。
require_once(get_template_directory().'/OAuth2/Client.php');
セキュリティ上の理由から、相対パスを使用したり、PHPファイルに直接アクセスしないでください。また、より安全にするために、client.php
ファイルでこの条件を使用する必要があります。
if ( ! defined( 'ABSPATH' ) ) {
exit('No script rookies, please.');
}
これはPHPファイルへの直接アクセスを許可しません。
また、require
の代わりにrequire_once
を使用して、誤って別の場所に含めてもエラーが発生しないようにします。