質問はさまざまな方法で何度も尋ねられましたが、残念ながらほとんどの回答では十分に網羅されていません。私はインクルードファイルを使ったことでも同じ問題を抱えています。
私のTwentyFourteenの子テーマのfunctions.php
では、私が使った:
require_once get_stylesheet_directory_uri() .'/admin-panel/theme-options.php';
そして私は Ian StewartのSample Theme Options を使っています。私は自分の多くのプロジェクトでそれを使っていましたが、ここでも述べたのと同じ方法で、エラーはありません。しかし最近、私はいくつかのプロジェクトで問題を抱えています。私がfunctions.php
にコードを持っていくならば、それですべては大丈夫です。しかし、それは私が外部ファイルをインクルード/要求しようとしているときにのみ発生します。
私はエラーがあります:
致命的なエラー: 2行目のC:\ xampp\htdocs\project\wp-content\themes\my-theme\admin-panel\theme-options.phpの未定義関数
add_action()
への呼び出し
この場合、私は(T14の)子テーマを使用しているエラーがあります。しかし、私の親のテーマの一つでさえ私は問題に直面しています。しかし、同じ環境で、私の他のプロジェクトはすべてのインクルードおよび/または必要条件(いくつかのadd_action()
が定義されている場合)でうまく動作しています。 すべてのadd_action()
呼び出し 、CPT割り当て、カスタム分類法割り当てなどに問題があります。しかし、外部ファイルを含む他の2つのプロジェクトの開発に成功しました。私のすべてのCPTが割り当てられているinc/
フォルダとそのメタボックスからも。
WordPressを再インストールし、すべてのプラグインを無効にし、Child Themeから試して、TwentyFifteenを変更して同じことだけを試し(デフォルトテーマを適用)、require()
、require_once()
、include()
、include
、require_once
、およびrequire
を次々と失敗しました。そして私はWP 4.1.1をすべての良いインストールと問題のあるインストールに使っています。
これまでの質問の大部分は、単純な行で答えられています。
メッセージが示すように、あなたは関数
add_action()
を定義しましたが、まだそれを使用しようとしています。
しかし、
get_stylesheet_directory_uri()
はURLを返します。要求されたファイルは、他の公的に利用可能なリソースのようにinclude
ステートメントのコンテキストなしで呼び出されます。これはPHPファイルをブラウザで直接開くのと同じです。 WordPressのコンテキストはなく、関数add_action()
またはadd_filter()
は定義されていません。
親テーマではget_template_directory()
を使用し、子テーマではget_stylesheet_directory()
を使用してください。
開発環境で allow_url_fopen
とallow_url_include
を無効にして、このようなエラーを早期にキャッチし、より良いエラーメッセージを表示します。