No se puede incluir el archivo PHP de la carpeta del tema de WordPress

3 minutos de lectura

avatar de usuario
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?

  • 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


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

¿Ha sido útil esta solución?