我尝试在目录和子目录上组织自定义页面模板,但我不能让wordpress识别它们。
我已经有了一个递归函数来获取关联数组,模板路径作为键,模板名称作为值,并修改wp缓存,页面模板选择器捕获它们,但是当页面被保存时,post meta包含其他模板;(
获取模板功能
function get_custom_templates($path = null, $templates = array()) {
$parent = "";
if (is_null($path))
$path = get_stylesheet_directory() . "/custom_templates";
else
$parent = basename($path);
foreach (scandir($path) as $item) {
if (substr($item, 0, 1) == ".") continue;
$template = $path . "/" . $item;
if (is_dir($template)) {
$templates = array_merge($templates, get_custom_templates($template, $templates));
} else {
$templates[$template] = $parent . "-" . basename($template, ".php");
}
}
return $templates;
}
将它们添加到编辑
function include_custom_templates($atts) {
$cache_key = "page_templates-" . md5(get_theme_root() . "/" . get_stylesheet());
$templates = wp_get_theme()->get_page_templates();
if (empty($templates))
$templates = array();
wp_cache_delete($cache_key, "themes");
$templates = array_merge($templates, get_custom_templates());
wp_cache_add($cache_key, $templates, "themes", 1800);
return $attrs;
}
add_filter("page_attributes_dropdown_pages_args", "include_custom_templates");
add_filter("wp_insert_post_data", "include_custom_templates");
答案 0 :(得分:0)
WordPress识别子文件夹页面模板。因此,最好将全局页面模板存储在此文件夹中,以帮助保持它们的有序性。
自WP 3.4以来就是这样。
所以我的建议是将它们放在主题的/page-templates
子目录中,而不是/custom_templates
。这样,您就可以立即识别出WordPress。