Incluir archivos en el archivo de funciones del tema secundario

8

Por lo general, en mi archivo de función de tema requeriré otros archivos para mantener las cosas ordenadas.

require_once("foo.php");

Ahora trabajando en un tema secundario, me gustaría hacer lo mismo. Estoy agregando opciones de administración personalizadas y parece imposible incluir código. Hice eco de la ruta para asegurarme de que estoy llamando al archivo correcto y está llamando a la ubicación correcta, pero nada dentro de ese archivo parece ejecutarse. El código funciona bien si se coloca dentro del archivo de funciones del tema secundario.

curtismchale
fuente
¿Puedes publicar un poco más de tu código para mostrar exactamente lo que estás haciendo?
MikeSchinkel

Respuestas:

13

Los temas secundarios hacen referencia a los temas principales por nombre de directorio y, en una instalación normal, todos sus temas viven wp-content/themes/, así que diría que está bien hacer referencia a esos temas por su ruta relativa:

include '../parent-theme/some-file.php';

Si eso te incomoda, observo las siguientes constantes en WordPress 3.0.1 con un tema de veinte niños llamado tt-child :

TEMPLATEPATH     /home/adam/public_html/wp3/wp-content/themes/twentyten
STYLESHEETPATH   /home/adam/public_html/wp3/wp-content/themes/tt-child

Por lo tanto, puede hacer lo siguiente en el tema secundario para hacer referencia al directorio del tema principal:

include TEMPLATEPATH . '/some-file.php';
Annika Backstrom
fuente
El constante STYLESHEETPATH ​​es lo que estaba buscando. Incluye el trabajo en un tema secundario si lo usa.
curtismchale
Estoy realmente sorprendido de que incluso puedas considerar usar un camino codificado ... un tema no debe funcionar solo en un entorno. Podría entender si get_template_directory () no existiera ... pero sí existe. Me acabo de dar cuenta de que es una pregunta de 2010 jajaja
Christian
La mejor opción no me funcionó. No estoy seguro de por qué cuando ciertamente tenía la ruta relativa correcta al archivo principal. La segunda opción funcionó para mí, así que gracias.
bowlerae
12

En un tema infantil, la forma correcta es

require_once( get_stylesheet_directory() . '/foo.php');

Mientras esté en el tema principal, aún puede usar

require_once ( get_template_directory() . '/foo.php' );

get_template_directory()todavía funciona en el tema secundario, lamentablemente se dirige al directorio del tema principal. En tu caso es útil

cristiano
fuente
1
Tuve que usar un '/' por ejemplo require_once (get_stylesheet_directory (). '/Foo.php');
Ssaltman
gracias @ssaltman. Tiene razón, la documentación lo confirma: developer.wordpress.org/reference/functions/… Edité mi respuesta
Christian
2

Hola @curtismchale :

No sé si es así o no, pero debe incluir comillas foo.php, así:

require_once('foo.php');

¿Eso resuelve tu problema?

MikeSchinkel
fuente
Ha buena nota. Lo extrañé aquí pero lo tenía en el tema infantil.
curtismchale
2

Uso <?php get_template_part( 'name-the-page-here' ); ?>. Sin la extensión .php

Everaldo Matias
fuente
2

Definitivamente no desea codificar la URL. La forma correcta de hacerlo es

require_once( get_stylesheet_directory(). '/my_included_file.php' );

Ver más información en Wordpress Codex

Ahora, por ejemplo, si estás modificando header.php que tiene una inclusión, lo referenciarás de la siguiente manera:

require_once( get_stylesheet_directory() . '/../parenthteme/my_included_file.php' );
Marlyse Comte
fuente
0

Es completamente posible y normal hacerlo incluye en functions.php.

Lo hago así en mi tema hijo ( phpes subdirectorio para el código):

include 'php/core.php';

Si tiene problemas sin razón aparente, intente habilitar el modo de depuración en wp-config.php:

define('WP_DEBUG', true);

Puede haber errores relevantes, pero no se muestran.

Rarst
fuente