get_template_directory_uri pointant sur le thème parent et non sur le thème enfant

35

Le problème que je rencontre est que get_template_directory_uri pointe vers le thème parent comme site/wp-content/themes/twentythirteen/myGallery/gallery_functions_include.php

mais je veux qu'il pointe vers le thème de mon enfant qui devrait être site/wp-content/themes/child-twentythirteen/myGallery/gallery_functions_include.php

ce que j'utilise c'est include (TEMPLATEPATH . '/myGallery/gallery_functions_include.php');

Elroy Fernandes
la source

Réponses:

70

get_template_directory_uri() renverra toujours l'URI du thème parent actuel.

Pour obtenir l'URI du thème enfant à la place, vous devez utiliser get_stylesheet_directory_uri().

Vous les trouverez dans la documentation , avec une liste d'autres fonctions utiles pour obtenir différents emplacements de répertoires de thèmes.


Si vous préférez utiliser une constante, TEMPLATEPATHs'apparente à un appel get_template_directory()(le thème parent) et STYLESHEETPATHà un appel get_stylesheet_directory()(le thème enfant).

Ces constantes sont définies par le noyau WordPress wp-includes/default-constants.phpet ressemblent à ceci:

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

S'il n'y a pas de thème enfant, les fonctions 'template' et 'stylesheet' renverront l'emplacement du thème parent.

Notez la différence entre ces fonctions et les fonctions se terminant par _uri- celles-ci renverront le chemin absolu du serveur (par exemple /home/example/public_html/wp-content/yourtheme), alors que les _urifonctions renverront l'adresse publique (ou URL) - par exemple. http://example.com/wp-content/themes/yourtheme.

Tim Malone
la source
que dire de include (TEMPLATEPATH. '/myGallery/gallery_functions_include.php'); celui-ci va également dans le répertoire des parents
Elroy Fernandes
@ ElroyFernandes J'ai ajouté ceci à ma réponse. STYLESHEETPATH ​​est la constante que vous voudriez à la place
Tim Malone
2
Merci d'avoir répondu à la question au lieu de simplement dire RTM. Cela est apparu en premier dans mes résultats de recherche.
rinogo
2
Bonne réponse mais mauvaise désignation de la part de WordPress - ce n'est pas seulement pour les feuilles de style, c'est pour JS, les actifs, etc.
Paul Feakins
1
@PaulFeakins Ne commencez pas à nommer les incohérences dans WordPress - c'est une route longue et venteuse qui mène qui-sait-où! ;)
Tim Malone
0

Vous devez déplacer vos modèles personnalisés, ceux qui ne sont pas contrôlés par le thème actif, vers un dossier enfant.

Gardez le thème séparé de tous les fichiers personnalisés de cette manière, vous pourrez le mettre à jour sans perdre votre travail personnalisé.

Votre thème clé en main vit ici
------------------------------------
\\ Site \ wp-content \ themes \ some_theme
Le thème de votre enfant habite ici
---------------------------
\\ Site \ wp-content \ themes \ une_theme-enfant

Vos styles et modèles personnalisés, ainsi que tous vos éléments inclus (éléments tels que le javascript personnalisé, les images non enregistrées dans WP, les polices personnalisées, les fichiers de données json et tous les plug-ins que vous pourriez mettre en file d'attente) doivent être déplacés vers le dossier enfant À l'extérieur du thème.

\ themes \ some_theme
\ themes \ some_theme-child \ (tous vos fichiers de modèle php personnalisés ici)
\ themes \ some_theme-child \ images
\ themes \ some_theme-child \ includes 
\ themes \ some_theme-child \ languages
\ themes \ some_theme-child \ json 
\ themes \ some_theme-child \ style

Pour vos pages de style personnalisées ( pas le style.css remplacé du thème ), mettez en file d'attente dans wp_enqueue_style ('some-css', get_stylesheet_directory () . '/Style/some.css', false, '0.0.1', 'all');

Utilisez get_stylesheet_directory_uri () avec vos appels xhr, etc.

Greg Bologna
la source