플러그인에 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
-
lol,이제 위의 코드에`WP_PLUGIN_URL`이 표시됩니다. :)lol, now I see `WP_PLUGIN_URL` in your code above :)
- 0
- 2011-01-21
- onetrickpony
-
간단히 말해서 URI가 아닌 파일 경로를 통해서만 파일을include () 할 수 있습니다.Put very simply you can only include() files via a filepath and not a URI.
- 3
- 2011-01-21
- editor
-
이 Codex 기사 (아마도 질문 한 후에 작성 됨)는 매우 유용합니다. 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
먼저 답변 해 주신 모든 분들께 감사드립니다.
내 문제는 WordPress를 거치지 않는 방식으로 전체 URL로 포함 된 파일을 호출하는 것이 었습니다.내가 질문에 언급했듯이 주 플러그인 파일에서 호출했기 때문에 발생했습니다.그래서 수정은 다음을 사용하여 끝났습니다.
include_once('/ipn/paypal-ipn.php');
WordPress 지원 . 그리고 다시 대답 해 주셔서 감사합니다!
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
-
대안-상대 경로가 * NEED * 인 경우`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
플러그인 내부에 추가 파일을 포함시킨 다른 방법을 확인하기 위해 이전에 만든 두 개의 플러그인을 살펴 보았는데 사용할 수있는 방법이 두 가지가 있다는 것을 알게되었습니다. 아마도 더 많은 것이있을 것입니다.
플러그인 디렉토리 정의
플러그인 내부에는 현재 플러그인 위치를 정의하는 다음 정의가 있습니다.
예제 코드 :
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 ()가 필요하지만 바닥 글이나 loop 나는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
안녕하세요 @ בניית אתרים :
워드 프레스가로드 될 때 플러그인을로드하려고 시도하기 전에
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
작업 디렉토리 내에 새 파일을 만들 때마다 매번 포함해야합니다.그러나 directroy를 스캔하고 자동으로 첨부하는 방법을 시도하십시오.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 함수를 호출했습니다.
그리고 얻은 결과 :
<인용구>치명적 오류 : 정의되지 않은 함수 add_action () 호출
이제 "use
if(**function_exists**('add_action')){
"라고 말하기 전에 사용하면 작동하지 않습니다.질문 :
include
,include_once
,require
의 차이점은 무엇이며 언제 마녀를 사용하나요?