Mezi dalšími novinkami, které přináší WordPress 4.7, jsou i dvě nové funkce a nový filter, určené pro vývojáře šablon.
Speciálně pro vytváření child themes, jsou určeny dvě nové funkce get_theme_file_uri a get_theme_file_path.
Jedním z nepostradatelných prvků, při vytváření odvozených šablon, je funkce get_template_part. Funguje poměrně jednoduše. Například:
get_template_part('page' 'content')
hledá nejprve soubor page-content.php, nejprve v child theme a pokud jej nenajde, hledá soubor v parent theme. Díky tomu, můžete jednoduše nahrazovat soubory rodičovské šablony.
U css a js souborů to zatím bylo tak, že jste je museli nejprve odregistrovat a následně vložit váš upravený soubor.
Get_theme_file_uri přináší do vývoje šablon, přesně ten mechanismus, jako u get_template_part.
wp_enqueue_script(
'my-script'
, get_theme_file_uri(
'js/my-script.js'
) );
Můžeme tak velmi lehce například v child šabloně nahradit javascriptový soubor, v němž potřebujeme udělat úpravy.
Navíc, na rozdíl od get_template_directory_uri, je možné jako parametr funkce zadat samotný soubor. Navíc je zde filtr theme_file_uri, který umožní manipulovat s vkládanými soubory pomocí pluginů.
Ekvivalentem k této nové funkci je get_theme_file_path.
{$type}_template_hierarchy filter
Přestože můžete s hierarchií šablony manipulovat pomocí filtru template_include, v novém WordPressu budou přidány nové filtry, jenž umožní manipulovat s hierarchií šablony na úrovni konkrétního typu souboru šablony.
Pokud například budete chtít změnit hierarchii v archívech, vypisující posty podle data, můžete postupovat takto:
add_filter(
'date_template_hierarchy'
,
function
(
array
$templates
) {
$year
= get_query_var(
'year'
);
array_unshift
(
$templates
,
"year-{$year}.php"
);
return
$templates
;
} );
V případě, že nemáte přesnou představu o fungování hierarchie v šablonách, raději se těmto úpravám vyhněte.
Filtry, jenž můžete použít:
embed_template_hierarchy
404_template_hierarchy
search_template_hierarchy
frontpage_template_hierarchy
home_template_hierarchy
taxonomy_template_hierarchy
attachment_template_hierarchy
single_template_hierarchy
page_template_hierarchy
singular_template_hierarchy
category_template_hierarchy
tag_template_hierarchy
author_template_hierarchy
date_template_hierarchy
archive_template_hierarchy
paged_template_hierarchy
index_template_hierarchy