PHPファイルをプラグインに正しい方法で含める方法
-
-
そのメッセージを受け取った場合、あなたは何か間違ったことをしています.これらのファイルから関数の実行を開始する前に、必ずファイルを含めてくださいyou're doing something wrong if you get that message. Make sure you include any files before you start running functions from these files
- 0
- 2011-01-21
- onetrickpony
-
それはそれではありません、呼び出しは私が含めているファイル内にあります!thats no it, the calls are within the files i'm including!
- 0
- 2011-01-21
- Bainternet
-
笑、今私はあなたのコードに `WP_PLUGIN_URL`を見ます:)lol, now I see `WP_PLUGIN_URL` in your code above :)
- 0
- 2011-01-21
- onetrickpony
-
非常に簡単に言えば、ファイルパスを介してのみinclude()ファイルを使用でき、URIは使用できません.Put very simply you can only include() files via a filepath and not a URI.
- 3
- 2011-01-21
- editor
-
このコーデックスの記事(おそらくあなたが質問した後に書かれた)は非常に役に立ちます:http://codex.wordpress.org/Determining_Plugin_and_Content_DirectoriesThis Codex article (probably written after you asked your question) is quite helpful: http://codex.wordpress.org/Determining_Plugin_and_Content_Directories
- 1
- 2014-03-12
- henrywright
-
これは、AJAXエンドポイントまたはフォームハンドラーとして使用されているPHPファイルで行っていますか?WordPressのテーマまたはプラグイン内のPHPファイルを直接呼び出すことは**絶対に**しないでください.また、URLを含めることは機能しません.そうすると、セキュリティに大きな問題が発生し、パフォーマンスが低下します.Are you doing this in a PHP file that's being used as an AJAX endpoint, or a form handler? You should **never** make direct calls to PHP files inside WordPress themes or plugins. Also including URLs doesn't work, if it did you'd have a massive security problem, and terrible performance
- 0
- 2016-05-13
- Tom J Nowell
-
8 回答
- 投票
-
- 2011-01-21
まず、回答してくださった皆様、ありがとうございました
私の問題は、含まれているファイルを完全なURLで呼び出し、WordPressを経由しないようにすることでした.質問で述べたように、メインのプラグインファイルから呼び出していたためです.そのため、修正には次のものが使用されました:
include_once('/ipn/paypal-ipn.php');
First , thank you to everyone who answered,
My problem was calling the included files with full url that way they don't go through WordPress. and that happened because as i stated on the question i was calling them from the main plugin file. so the fix ended up using:
include_once('/ipn/paypal-ipn.php');
i read about at the WordPress support. and again thanks for answering!
-
この回答(https://wordpress.stackexchange.com/a/32002/123092)を承認済みとしてマークすることを再検討していただけますか?Can you please reconsider to mark this answer (https://wordpress.stackexchange.com/a/32002/123092) as accepted one?
- 0
- 2017-09-18
- I am the Most Stupid Person
-
- 2011-10-24
このパーティーに遅れて来ますが、これが「WordPress」の方法です.
plugin_dir_path( __FILE__ )
を使用してください.例:<?php include( plugin_dir_path( __FILE__ ) . 'ipn/paypal-ipn.php'); ?>
関数はファイルパスの末尾のスラッシュを返すことに注意してください.
Coming in late to this party, but here's the "WordPress" way: use
plugin_dir_path( __FILE__ )
, e.g.:<?php include( plugin_dir_path( __FILE__ ) . 'ipn/paypal-ipn.php'); ?>
Note that the function does return the trailing slash for the filepath.
-
`__FILE__`を使用すると、呼び出し元の現在のファイルを基準にして出力されるため、プラグインファイル構造内のサブディレクトリから`include`ステートメントを実行すると、サブディレクトリも返されます.Note that by using `__FILE__` it will output relative to the current file you call it from, so if your `include` statement is done from a subdirectory inside your plugin file structure you'll get the subdirectory back too.
- 3
- 2018-01-30
- squarecandy
-
別の方法-相対パスが*必要*な場合は、 `require_once(plugin_dir_path(__ DIR __). '/myfile.inc');`です.The alternative - if you *NEED* relative paths, is `require_once(plugin_dir_path(__DIR__).'/myfile.inc');`
- 2
- 2019-10-04
- FoggyDay
-
- 2011-01-21
以前に作成したいくつかのプラグインを調べて、プラグイン内に追加のファイルを含めるさまざまな方法を確認しました.使用できる方法は2つあり、おそらくもっと多くの方法があることに気付きました.
プラグインディレクトリを定義する
プラグインの内部には、現在のプラグインの場所を定義するための次の定義があります.
サンプルコード:
define( 'PLUGIN_DIR', dirname(__FILE__).'/' );
単純なインクルードまたは必須
簡単に使用できます.以下のサンプルコードのように場所を参照することにより、プラグインフォルダー内のinclude、include_once、require、またはrequire_once.以下の例は、プラグインフォルダ内のフォルダ内の別のファイルを含むルートプラグインディレクトリ内のファイルに基づいています.
サンプルコード:
include "classes/plugin-core.php";
I looked through a couple of plugins that I previously created to see the diferent ways that I have included extra files inside of plugins and I noticed there are two methods you can use, there are probably more.
Define your plugin directory
Inside of your plugin have the following definition to define the current plugin location.
Example code:
define( 'PLUGIN_DIR', dirname(__FILE__).'/' );
Just a straight up include or require
You can simply use; include, include_once, require or require_once inside of your plugin folder by referencing the location like in the below example code. The below example will be based on a file in your root plugin directory including another file from within a folder inside of your plugin folder.
Example code:
include "classes/plugin-core.php";
-
相対インクルードは、あらゆる種類の厄介な予期しない問題を引き起こす可能性があります.relative includes can bring all kinds of nasty unexpected issues.
- 0
- 2017-12-01
- Mark Kaplun
-
- 2011-01-21
インクルード用のWordPress構造を放棄し、以下を使用することになります:
require_once(dirname(__FILE__) . '/filename.php);
スコープの問題のように思われる問題が実際に解決されるとは思いませんが、私が使用しているコードです.
includeとrequireの違いについて:
ファイルが見つからない場合、includeは警告をスローします
ファイルが見つからない場合、requireは致命的なエラーをスローしますinclude_onceおよびrequire_onceは、ファイル/コードがすでに含まれている/必要である場合、ファイル/コードを再度含める/必要としない(私が知る限り、これは特定のディレクトリ内の特定のファイルに対してのみであることに注意してください).
>I end up forgoing the WordPress constructs for includes and use the following:
require_once(dirname(__FILE__) . '/filename.php);
I don't think it will actually solve your issue, which seems to be a scope issue, but it is the code I use.
As for the difference between include and require:
include will throw a warning if the file is not found
require will throw a fatal error if the file is not foundinclude_once and require_once will not include/require the file/code again if it has already been included/required (note that as far as I can tell, this is only for a specific file in a specific directory).
-
- 2011-01-21
含める
include()ステートメントは、指定されたファイルを含めて評価します.
一度含める
include_once()ステートメントは、指定されたものを含み、評価します の実行中のファイル 脚本.これは次のような動作です include()ステートメント、 違いは、 ファイルはすでに含まれています、それ 再び含まれることはありません.として 名前が示唆する、それは含まれます 一度だけ.
必要
require()とinclude()は、方法を除いてすべての点で同一です. 障害を処理します.それらは両方とも生成します 警告ですが、require()の結果は 致命的な誤り.言い換えれば、しないでください 必要に応じてrequire()を使用することを躊躇します の処理を停止するための不足しているファイル ページ.
一度必要
require_once()ステートメントには、指定されたものが含まれ、評価されます の実行中のファイル 脚本.これは次のような動作です require()ステートメント、 違いは、 ファイルはすでに含まれています、それ 再び含まれることはありません.
上記の情報はPHPのドキュメントからのものです.正しいものはありません.コードの必要性によって異なります.関数などの重要なものにはrequire()が必要ですが、フッターやループ私はinclude_onceまたはincludeを使用します.これは、警告を処理して、fatal_errorだけでなくエラーが発生したことをユーザー/訪問者に伝えることができるためです.
Include
The include() statement includes and evaluates the specified file.
Include Once
The include_once() statement includes and evaluates the specified file during the execution of the script. This is a behavior similar to the include() statement, with the only difference being that if the code from a file has already been included, it will not be included again. As the name suggests, it will be included just once.
Require
require() and include() are identical in every way except how they handle failure. They both produce a Warning, but require() results in a Fatal Error. In other words, don’t hesitate to use require() if you want a missing file to halt processing of the page.
Require Once
The require_once() statement includes and evaluates the specified file during the execution of the script. This is a behavior similar to the require() statement, with the only difference being that if the code from a file has already been included, it will not be included again.
The info above is from the PHP documentation, the thing is there is not a correct one, will depend on the need of the code, I do require() on important stuff like functions, but on theme files like footer or the loop I use include_once or include because i can handle the warning and say to the user/visitor that happend an error instead of just a fatal_error
-
@mtekkが言うように、tis構造を使用することをお勧めします. require_once(dirname(__ FILE __). '/filename.php);As the @mtekk say I would recomend you to use tis structure: require_once(dirname(__FILE__) . '/filename.php);
- 0
- 2011-01-21
- Webord
-
- 2011-01-21
こんにちは @בנייתאתרים:
WordPressが読み込まれると、プラグインを読み込もうとする前の
add_action()
関数が定義されます.エラーが発生したという事実は、何かおかしなことをしている、またはWordPressのインストールに問題があります.「プラグイン」をロードするのは誰ですか?
include*()
またはrequire*()
を使用して、おそらくwp-config.php
ファイルにロードしていますか?Hi @בניית אתרים:
When WordPress is loading it defines the
add_action()
function before it attempts to load any plugins The fact you are getting the error tells me you are doing something strange or that something is wrong with your WordPress install.Who are you getting your "plugin" to load? Are you using an
include*()
orrequire*()
to load it, maybe in yourwp-config.php
file? -
- 2016-05-13
include( plugin_dir_path( __FILE__ ) . 'ipn/paypal-ipn.php');
または
define( 'PLUGIN_ROOT_DIR', plugin_dir_path( __FILE__ ) ); include( PLUGIN_ROOT_DIR . 'ipn/paypal-ipn.php');
または
$plugin_dir_path = plugin_dir_path( __FILE__ ); include( $plugin_dir_path . 'ipn/paypal-ipn.php');
注:.css&amp;をキューに入れるプラグイン内の.jsファイル
を使用しますadmin_enqueue_scripts
はplugin_dir_url( __FILE__ )
$plugin_dir_uri = plugin_dir_url( __FILE__ ); wp_enqueue_style( 'plugin-style', $plugin_dir_uri . 'css/plugin-style.css');
include( plugin_dir_path( __FILE__ ) . 'ipn/paypal-ipn.php');
or
define( 'PLUGIN_ROOT_DIR', plugin_dir_path( __FILE__ ) ); include( PLUGIN_ROOT_DIR . 'ipn/paypal-ipn.php');
or
$plugin_dir_path = plugin_dir_path( __FILE__ ); include( $plugin_dir_path . 'ipn/paypal-ipn.php');
Note : to enqueu .css & .js files
admin_enqueue_scripts
inside plugin useplugin_dir_url( __FILE__ )
$plugin_dir_uri = plugin_dir_url( __FILE__ ); wp_enqueue_style( 'plugin-style', $plugin_dir_uri . 'css/plugin-style.css');
-
- 2014-05-29
作業ディレクトリ内に新しいファイルを作成するときは常に、それを含める必要があります.ただし、ダイレクトロイをスキャンして自動的に添付する方法を試してください.phpファイルだけでなく、両側(バックエンド、フロントエンド)にphp、js、cssファイルを適切に含めることができます.
http://kvcodes.com/2014/05/wordpress-theme-development-include-files-automatically/
Whenever you create a new file inside your working directory, you have to include it everytime. But try a method to scan your directroy and attach it automatically, not only the php files, Which helps to include php, js and css fiules properly on the both sides( backend, front end).
http://kvcodes.com/2014/05/wordpress-theme-development-include-files-automatically/
-
回答に提供されたリンクから関連情報を追加してください.クレジットの目的でリンクを使用してください.質問を[編集]してくださいPlease add relevant information from the link provided to your answer. Use the link for credit purposes. Please [edit] your question
- 1
- 2014-05-29
- Pieter Goosen
私の問題は、メインのプラグインファイルに次のようなPHPファイルを含める場合です.
そのファイルで、次のようなWordPress関数を呼び出しています.
そして私は:
「
if(**function_exists**('add_action')){
を使用する」と言う前に、それを使用すると機能しません.質問:
include
、include_once
、require
の違いは何ですか?また、いつwitchを使用するのですか?