get_parent_theme_file_path vs get_template_directory

4

J'ai lu des informations sur les nouvelles fonctions de emplacement du thème de référence ajouté dans la v4.7.

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

    
posée Sirmontegu 23.02.2017 - 02:47

1 réponse

4
  

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 le chemin parent_theme_fichier
  • Et l'argument du chemin du fichier

Si vous consultez la source get_parent_theme_file_path () , elle ne fait que renvoyer get_template_directory() avec des fonctionnalités supplémentaires, comme par exemple si un fichier est donné en argument à get_parent_theme_file_path , il renvoie le chemin d'accès au fichier. Il contient également parent_theme_file_path filter qui est très utile pour 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 aucune raison de ne pas utiliser ceci au lieu de get_template_directory .

J'ai écrit un post sur ces fonctions, qui 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 souhaitez 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;
}
    
réponse donnée bravokeyl 23.02.2017 - 07:50

Lire d'autres questions sur les étiquettes