web-dev-qa-db-fra.com

Remplacer get_template_directory () dans le thème enfant?

Est-il possible de remplacer une get_template_directory() dans le fichier functions.php de mon enfant?

Je veux apporter des modifications au fichier:

/**
* Load Custom Post types file.
*/
require get_template_directory() . '/inc/post-types.php';

Je préférerais évidemment que mon travail ne soit pas écrasé lorsque je mets à jour mon thème. Par conséquent, puis-je annuler l'enregistrement du fichier parent, puis réinscrire le fichier de mon enfant dans le fichier de fonctions de celui-ci?

7
Heather

Réponse tardive, mais dans Wordpress 4.7, deux nouvelles fonctions ont été introduites pour répondre à cette question.

get_theme_file_path() (pour les chemins de fichiers absolus) et get_theme_file_uri() (pour les URL) fonctionnent exactement comme get_template_part() en ce sens qu'ils recherchent automatiquement ce fichier dans le thème enfant en premier, puis se replient sur le thème parent.

Dans votre exemple, vous pouvez le réécrire en utilisant 4.7 pour ressembler à ceci:

/**
* Load Custom Post types file.
*/
require get_theme_file_path( 'inc/post-types.php' );

Plus d'informations ici: https://make.wordpress.org/core/2016/09/09/new-functions-hooks-and-behaviour-for-theme-developers-in-wordpress-4-7/

15
brianjohnhanna

Vous devez utiliser get_stylesheet_directory_uri() au lieu de get_template_directory() dans votre thème enfant.

À partir du codex WordPress:

get_template_directory_uri ()

Si un thème enfant est utilisé, l'URI du répertoire du thème parent sera renvoyé. get_template_directory_uri () doit être utilisé pour les ressources qui ne sont pas destinées à être incluses dans/écrasées par un thème enfant. Utilisez get_stylesheet_directory_uri () pour inclure les ressources destinées à être incluses dans/écrasées par le thème enfant.

get_stylesheet_directory_uri ()

Si un thème enfant est utilisé, cette fonction renvoie l'URI du répertoire de thèmes de l'enfant. Utilisez get_template_directory_uri () pour éviter d’être remplacé par un thème enfant.

9
James Barrett