Francesca
Estoy tratando de incluir un archivo PHP que se encuentra en la raíz de mi archivo de tema de WordPress.
Por ejemplo, localhost/mywordpresssite/wp-content/themes/mytheme/myfile.php
Estoy tratando de llamarlo desde un archivo. footer.php
que se encuentra en parts > shared
Por ejemplo, localhost/mywordpresssite/wp-content/themes/mytheme/parts/shared/footer.php
Puedo confirmar que al visitar la URL completa en el navegador, el archivo se muestra, por lo que definitivamente es el camino correcto.
No he podido incluir este archivo de varias maneras diferentes:
1) Forma preferida: usar el URI del directorio de la hoja de estilo
<?php
$stylesheet_root = get_stylesheet_directory_uri();
include $stylesheet_root.'/myfile.php';
?>
Esto debería encontrar el URI de la hoja de estilo y luego encontrar el archivo, pero aparece este error:
no se pudo encontrar un envoltorio adecuado
Entiendo que la razón por la que esto sucede es que no es seguro y que allow_url_include
está desactivado de forma predeterminada, entonces, ¿cuál es la mejor manera?
2) Codificación en la URL para subir dos directorios
Esto parece una forma bastante sensata porque los archivos siempre estarán separados por dos directorios relativos. Pero esto parece no hacer nada. Todavía está buscando el archivo dentro del mismo directorio:
<?php include '../../myfile.php'; ?>
3) Simplemente codifique la cosa estúpida.
Sin embargo, esto TODAVÍA no funciona, aunque la URL colocada aquí se prueba en el navegador y carga correctamente el archivo correcto. Sin embargo, no lo cargará en el archivo donde está incluido …
<?php include 'localhost/mywordpresssite/wp-content/themes/mytheme/twitter-feed.php'; ?>
Da el error:
Advertencia: incluir (localhost/mywordpresssite/wp-content/themes/mytheme/twitter-feed.php): no se pudo abrir la transmisión: no existe tal archivo o directorio en /Applications/MAMP/htdocs/mywordpresssite/wp-content/themes/mytheme /parts/shared/footer.php en la línea 3
¿Que más puedo hacer?
estas tratando de include
por URL. Necesitas include
por la ruta del archivo (no el uri):
<?php
$stylesheet_root = get_stylesheet_directory();
include( $stylesheet_root . '/myfile.php' );
?>
Leer más sobre get_stylesheet_directory() en los documentos.
Parece que está utilizando una ruta relativa, es decir. no tienes el arranque /
. La ruta debe ser similar a (unix/mac) /var/www/mywordpresssite/wp-content/themes/mytheme/twitter-feed.php
.
Puedes usar include(__DIR__ . '/myfile.php');
por lo que sus inclusiones siempre son relativas al directorio en el que se encuentra actualmente su secuencia de comandos.
Por alguna razón usando ../../myfile.php
no funcionará para incluye.
Puse hello.php en la carpeta raíz de mi tema (donde está footer.php) y esto me funciona al final de mi footer.php:
<?php include (TEMPLATEPATH . '/hello.php'); ?>
-
Parece que TEMPLATEPATH está en desuso, de hecho, deberíamos usar get_template_directory() en su lugar
– Vinch
14 de abril de 2015 a las 12:36
Qué pasa:
include( 'twitter-feed.php' )
? ¿Qué produce eso?– BenM
14 de abril de 2015 a las 12:16
Creo que no entiende incluir, no es relativo a la URL de su sitio web, es relativo al directorio de su servidor, por lo que codificar todo se verá más como
include '/var/www/mywordpresssite...
– CᴴᵁᴮᴮʸNᴵᴺᴶᴬ
14 de abril de 2015 a las 12:25
¿Todavía en busca de una solución?
– rnevio
15 de abril de 2015 a las 5:18
get_stylesheet_directory_uri
obtendrá un URI, pero desea una ruta del sistema de archivos local. Y también hay una función para eso:get_stylesheet_directory
– CBroe
15/04/2015 a las 21:25