get_template_directory_uri apuntando al tema principal, no al tema secundario

35

El problema que tengo es que get_template_directory_uri apunta al tema principal como site/wp-content/themes/twentythirteen/myGallery/gallery_functions_include.php

pero quiero que apunte al tema de mi hijo, que debería ser site/wp-content/themes/child-twentythirteen/myGallery/gallery_functions_include.php

lo que estoy usando es include (TEMPLATEPATH . '/myGallery/gallery_functions_include.php');

Elroy Fernandes
fuente

Respuestas:

70

get_template_directory_uri() siempre devolverá el URI del tema principal actual.

Para obtener el URI del tema secundario, debe usarlo get_stylesheet_directory_uri().

Puede encontrarlos en la documentación , junto con una lista de otras funciones útiles para obtener varias ubicaciones de directorio de temas.


Si prefiere usar una constante, entonces TEMPLATEPATHes similar a llamar get_template_directory()(es decir, el tema principal), y STYLESHEETPATHes similar a llamar get_stylesheet_directory()(es decir, el tema secundario).

Estas constantes son establecidas por el núcleo de WordPress wp-includes/default-constants.phpy básicamente se ven así:

define('TEMPLATEPATH', get_template_directory());
...
define('STYLESHEETPATH', get_stylesheet_directory());

Si no hay un tema secundario, las funciones 'plantilla' y 'hoja de estilo' devolverán la ubicación del tema principal.

Tenga en cuenta la diferencia entre estas funciones y las funciones que terminan en _uri: estas devolverán la ruta absoluta del servidor (por ejemplo /home/example/public_html/wp-content/yourtheme), mientras que las _urifunciones devolverán la dirección pública (también conocida como URL), por ejemplo. http://example.com/wp-content/themes/yourtheme.

Tim Malone
fuente
¿Qué pasa con include (TEMPLATEPATH. '/myGallery/gallery_functions_include.php'); este también va al directorio principal
Elroy Fernandes
@ElroyFernandes He agregado esto a mi respuesta. STYLESHEETPATH ​​es la constante que querrías en su lugar
Tim Malone
2
Gracias por responder la pregunta en lugar de solo decir RTM. Esto apareció primero en mis resultados de búsqueda.
rinogo
2
Buena respuesta pero mal nombre por parte de WordPress: no es solo para hojas de estilo, es para JS, activos, incluye, etc.
Paul Feakins
1
@PaulFeakins No empiece a nombrar inconsistencias de nombres en WordPress: ¡ese es un camino largo y ventoso que conduce a quién sabe dónde! ;)
Tim Malone
0

Debe mover sus plantillas personalizadas, aquellas que no están controladas por el tema activo, a una carpeta secundaria.

Mantenga el tema separado de todos los archivos personalizados de esta manera, el tema puede actualizarse sin perder su trabajo personalizado.

Tu tema original vive aquí
------------------------------------
\\ Site \ wp-content \ themes \ some_theme
El tema de tu hijo vive aquí
---------------------------
\\ Site \ wp-content \ themes \ some_theme-child

Sus estilos y plantillas personalizadas y todas sus inclusiones (cosas como javascript personalizado, imágenes que no se guardan en WP, fuentes personalizadas, archivos de datos json y cualquier complemento que pueda poner en cola) deben moverse a la carpeta secundaria FUERA del tema.

\ themes \ some_theme
\ themes \ some_theme-child \ (todos sus archivos de plantilla php personalizados aquí)
\ themes \ some_theme-child \ images
\ themes \ some_theme-child \ incluye 
\ themes \ some_theme-child \ languages
\ themes \ some_theme-child \ json 
\ themes \ some_theme-child \ style

Para sus páginas de estilo personalizadas ( no el estilo reemplazado del tema style.css ) ponga en cola con wp_enqueue_style ('some-css', get_stylesheet_directory () . '/Style/some.css', false, '0.0.1', 'all');

Use get_stylesheet_directory_uri () con sus llamadas xhr, etc.

Greg Bologna
fuente