web-dev-qa-db-fra.com

get_parent_theme_file_path vs get_template_directory

Je lisais sur les nouvelles fonctions de référençant l'emplacement du thème ajouté dans v4.7.

J'ai lu le billet trac . Je comprends pourquoi ils ont créé ces fonctions et les avantages de get_theme_file_path() pour une utilisation dans les thèmes enfants. Outre la clarté verbale, existe-t-il une raison spécifique d'utiliser get_parent_theme_file_path() sur get_template_directory() lors de la référence à des fichiers dans le thème parent?

4
Sirmontegu

Existe-t-il une raison spécifique d'utiliser get_parent_theme_file_path () sur get_template_directory ()

Oui. Cette nouvelle fonction est fournie avec un filtre

  • Filtre parent_theme_file_path
  • Et argument au chemin du fichier

Si vous jetez un coup d’œil à get_parent_theme_file_path () source, il ne fait que renvoyer get_template_directory() avec des fonctionnalités supplémentaires, comme si un fichier était donné comme argument du get_parent_theme_file_path, il renvoyait le chemin vers le fichier et il contenait également le filtre parent_theme_file_path qui est très bon à remplacer.

get_parent_theme_file_path est introduit pour des raisons de cohérence et pour permettre aux thèmes enfants de remplacer facilement. Je ne vois aucun intérêt à ne pas utiliser ceci à la place de get_template_directory.

J'ai écrit un post sur ces fonctions, cela peut être utile.

Cas d'utilisation:

Supposons que vous incluez un fichier dans le thème en utilisant get_template_directory comme ci-dessous.

include(get_template_directory().'/inc/bk.php'); /*../themes/bk-theme/inc/bk.php */

et si vous voulez remplacer bk.php dans le thème de l'enfant, ce n'est pas possible

Si vous incluez le même fichier avec la nouvelle fonction

include(get_parent_theme_file_path('inc/bk.php')); /*../bk-theme/inc/bk.php */

Vous pouvez facilement remplacer cette inclusion de fichier dans le thème de l’enfant en utilisant parent_theme_file_path comme suit:

add_filter('parent_theme_file_path','bk_257597_parent_theme_file',10,2);
function bk_257597_parent_theme_file($path,$file){
 if('inc/bk.php' == $file) {
  //do something
  $file = 'my-file';
  $path = 'my-path'.$file;
 }
 return $path;
}
3
bravokeyl