Cómo incluir archivos PHP en complementos de la manera correcta
-
-
estás haciendo algomal si recibesesemensaje.Asegúrese deincluir cualquier archivo antes de comenzar aejecutarfunciones desdeestos archivosyou'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
-
esono,las llamadasestán dentro de los archivos queestoyincluyendo!thats no it, the calls are within the files i'm including!
- 0
- 2011-01-21
- Bainternet
-
lol,ahora veo `WP_PLUGIN_URL`en tu código de arriba :)lol, now I see `WP_PLUGIN_URL` in your code above :)
- 0
- 2011-01-21
- onetrickpony
-
Enpocaspalabras,solopuedeincluir archivos () através de una ruta de archivo yno un URI.Put very simply you can only include() files via a filepath and not a URI.
- 3
- 2011-01-21
- editor
-
Este artículo del Codex (probablementeescrito después de que hizo supregunta)esbastante útil: 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
-
¿Está haciendoestoen un archivo PHP que seestá utilizando como unpuntofinal AJAX o un controlador deformulario?** Nunca ** debe realizar llamadas directas a archivos PHP dentro de lostemas o complementos de WordPress.Además,incluir URLnofunciona,si lo hiciera,tendría unproblema de seguridadmasivo y un rendimientoterribleAre 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 respuestas
- votos
-
- 2011-01-21
Primero,gracias atodos los que respondieron
Miproblemafue llamar a los archivosincluidos con la URL completa deesamaneranopasanpor WordPress.yeso sucedióporque,como dijeen lapregunta,losestaba llamando desdeel archivoprincipal del complemento.por lo que la soluciónterminó usando:
include_once('/ipn/paypal-ipn.php');
Leí sobre soporte de WordPress . ynuevamentegraciaspor contestar!
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!
-
¿Puede reconsiderarmarcaresta respuesta (https://wordpress.stackexchange.com/a/32002/123092) como aceptada?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
Llegartarde aestafiesta,peroestaes laforma de "WordPress": use
plugin_dir_path( __FILE__ )
,porejemplo:<?php include( plugin_dir_path( __FILE__ ) . 'ipn/paypal-ipn.php'); ?>
Tengaen cuenta que lafunción sí devuelve la barra diagonal para la ruta del archivo.
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.
-
Tengaen cuenta que al usar `__FILE__` segenerará una salida relativa al archivo actual desdeel que lo llama,por lo que si su declaración`include` se realiza desde un subdirectorio dentro de laestructura del archivo de su complemento,también obtendráel subdirectorio.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
-
La alternativa - si * NECESITA * rutas relativas,es `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
Revisé unpar de complementos que creé anteriormentepara ver las diferentesformasen que heincluido archivos adicionales dentro de los complementos ynoté que hay dosmétodos quepuede usar,probablemente haymás.
Defina su directorio de complementos
Dentro de su complemento,tenga la siguiente definiciónpara definir la ubicación actual del complemento.
Código deejemplo:
define( 'PLUGIN_DIR', dirname(__FILE__).'/' );
Soloincluye o requiere
Simplementepuede usar;include,include_once,require o require_once dentro de la carpeta detuplugin haciendo referencia a la ubicación comoen el código deejemplo a continuación.El siguienteejemplo sebasaráen un archivoen su directorio raíz de complementos queincluye otro archivo dentro de una carpeta dentro de su carpeta de complementos.
Código deejemplo:
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";
-
Lasinclusiones relativaspuedentraertodotipo deproblemasinesperados desagradables.relative includes can bring all kinds of nasty unexpected issues.
- 0
- 2017-12-01
- Mark Kaplun
-
- 2011-01-21
Termino renunciando a las construcciones de WordPressparaincluye y uso lo siguiente:
require_once(dirname(__FILE__) . '/filename.php);
No creo que realmente resuelva suproblema,queparece ser unproblema de alcance,peroesel código que uso.
En cuanto a la diferenciaentreincluir y requerir:
include arrojará una advertencia sino seencuentrael archivo
requiregenerará un errorfatal sino seencuentrael archivoinclude_once y require_oncenoincluirán/requeriránel archivo/códigonuevamente si ya se haincluido/requerido (tengaen cuenta que,por lo quepuedo decir,estoes solopara un archivoespecíficoen un directorioespecífico).
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
<×Incluir×
La declaracióninclude ()incluye yevalúael archivoespecificado.
Incluir una vez
La declaracióninclude_once ()incluye yevalúaelespecificado archivo durante laejecución del guión. Estees un comportamiento similar a la declaracióninclude (),conel único la diferenciaes que siel código de ya se haincluido un archivo, no seincluirá denuevo. Comoel elnombre sugiere,seincluirá solo una vez.
<×Require×
require ()e include () sonidénticosen todos los sentidos,exceptoen cómo manejarelfracaso. Ambosproducen un Advertencia,pero require () da como resultado un Errorfatal. En otraspalabras,no dudeen usar require () si lo desea un archivofaltantepara detenerelprocesamiento de lapágina.
Requerir una vez
La declaración require_once ()incluye yevalúaelespecificado archivo durante laejecución del guión. Estees un comportamiento similar a la declaración require (),con la única la diferenciaes que siel código de ya se haincluido un archivo, no se volverá aincluir.
Lainformación anteriores de la documentación de PHP,lo quepasaes queno hay una correcta,dependerá de lanecesidad del código,sí requiero ()en cosasimportantes comofunciones,peroen archivos detema comopie depágina o loop Yo usoinclude_once oincludeporquepuedomanejar la advertencia y decirle al usuario/visitante que ocurrió unerroren lugar de solo unfatal_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
-
Como dice @mtekk,le recomendaría que useestaestructura: 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
Hola @ בניית אתרים:
Cuando WordPress seestá cargando,define lafunción
add_action()
antes de queintente cargar cualquier complemento El hecho de queesté recibiendoelerrorme dice queestá haciendo algoextraño oque algo andamal con suinstalación de WordPress.¿A quién va a hacer que cargue su "complemento" ?¿Está utilizando un
include*()
orequire*()
para cargarlo,tal vezen su archivowp-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');
o
define( 'PLUGIN_ROOT_DIR', plugin_dir_path( __FILE__ ) ); include( PLUGIN_ROOT_DIR . 'ipn/paypal-ipn.php');
o
$plugin_dir_path = plugin_dir_path( __FILE__ ); include( $plugin_dir_path . 'ipn/paypal-ipn.php');
Nota:paraenqueu .css & amp;Archivos .js
admin_enqueue_scripts
dentro del complemento useplugin_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
Siempre que cree unnuevo archivo dentro de su directorio detrabajo,debeincluirlo cada vez.Peropruebe unmétodoparaescanear su directorio y adjuntarlo automáticamente,no solo los archivosphp,lo que ayuda aincluir archivosphp,js y css correctamenteen ambos lados (backend,frontend).
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/
-
Agregueinformación relevante delenlaceproporcionado a su respuesta.Utiliceelenlaceparafines crediticios.Porfavor [editar] supreguntaPlease 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
Miproblemaes que cuandoen el archivo del complementoprincipalincluyo un archivo PHP similar aesto:
yen ese archivotengo una llamada a unafunción de WordPress como:
y obtengo:
Ahora,antes de decir "use
if(**function_exists**('add_action')){
" si lo uso,simplementenofunciona.Laspreguntas:
include
,include_once
,require
y cuándo lo uso?