get_parent_theme_file_path vs. get_template_directory

4

Eu tenho lido sobre as novas funções para referenciando o local do tema adicionado na v4.7.

Eu li o bilhete trac . Eu entendo por que eles criaram essas funções e o benefício de get_theme_file_path() para uso em temas filhos. Mas, além da clareza verbal, há um motivo específico para usar get_parent_theme_file_path() over get_template_directory() ao fazer referência a arquivos no tema pai?

    
por Sirmontegu 23.02.2017 / 02:47

1 resposta

4
  

Existe um motivo específico para usar get_parent_theme_file_path () sobre   get_template_directory ()

Sim. Esta nova função vem com um filtro

  • Filtrar parent_theme_file_path
  • E argumento para o caminho do arquivo

Se você der uma olhada na fonte get_parent_theme_file_path () , ela só estará retornando get_template_directory() com funcionalidade extra, como se um arquivo fosse fornecido como um argumento para o get_parent_theme_file_path , ele retornava o caminho para o arquivo e também vinha o parent_theme_file_path filter, o que é muito bom para substituir.

get_parent_theme_file_path é introduzido para consistência e para permitir que os temas filhos sejam substituídos facilmente. Eu não vejo nenhum ponto para não usar isso em vez de get_template_directory .

Eu escrevi um post sobre essas funções, que podem seja útil.

Caso de uso:

Suponha que você esteja incluindo um arquivo no tema usando get_template_directory da seguinte forma.

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

e se você quiser substituir bk.php no tema filho, não é possível

Se você incluir o mesmo arquivo com a nova função

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

Você pode facilmente substituir essa inclusão de arquivo no tema filho usando parent_theme_file_path da seguinte forma

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;
}
    
por bravokeyl 23.02.2017 / 07:50