get_parent_theme_file_path vs. get_template_directory

4

He estado leyendo sobre las nuevas funciones para referenciando la ubicación del tema agregado en v4.7.

Leí el ticket de trac . Entiendo por qué crearon estas funciones y el beneficio de get_theme_file_path() para usar en temas secundarios. Pero aparte de la claridad verbal, ¿hay alguna razón específica para usar get_parent_theme_file_path() sobre get_template_directory() cuando se hace referencia a archivos en el tema principal?

    
pregunta Sirmontegu 23.02.2017 - 02:47

1 respuesta

4
  

¿Hay alguna razón específica para usar get_parent_theme_file_path () sobre   get_template_directory ()

Sí. Esta nueva función viene con un filtro

  • filtro parent_theme_file_path
  • Y el argumento de la ruta del archivo

Si echas un vistazo a la fuente get_parent_theme_file_path () , solo está devolviendo get_template_directory() con una funcionalidad adicional, como si un archivo se presenta como un argumento para el get_parent_theme_file_path , devuelve la ruta al archivo y también viene el filtro parent_theme_file_path , que es muy bueno anular.

get_parent_theme_file_path se introduce por coherencia y para permitir que los temas secundarios se anulen fácilmente. No veo ningún punto para no usar esto en lugar de get_template_directory .

Escribí una publicación sobre estas funciones, que puede ser de ayuda.

Caso de uso:

Supongamos que está incluyendo un archivo en el tema utilizando get_template_directory como el siguiente.

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

y si desea reemplazar bk.php en el tema secundario, no es posible

Si incluye el mismo archivo con la nueva función

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

Puede anular fácilmente la inclusión de este archivo en el tema secundario utilizando parent_theme_file_path como el siguiente

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

Lea otras preguntas en las etiquetas