您之前的问题,Possible to create a "variant" page template that only contains differences and is therefore resilient to updates of original (ie page.php)?, 为这个问题提供了更好的背景。
正如您Sally CJ在您使用的评论中所指出的theme_page_templates 要将自定义模板添加到模板选择列表中,请执行以下操作。要跳过为模板添加单独的文件,请使用template_include 要选择的筛选器page.php
作为实际模板文件。将前端的模板对准template_redirect 与的操作is_page_template() 添加数据打印功能的条件wp_head
.
比如像这样,
function my_service_template_slug() {
return \'my-service-template.php\';
}
function my_service_template_name() {
return __( \'My Service Template\', \'my-textdomain\' );
}
// Add custom template to the template list
add_filter(
\'theme_page_templates\',
function( $page_templates, $theme, $post ){
$page_templates[my_service_template_slug()] = my_service_template_name();
return $page_templates;
},
11,
3
);
// Use default page.php as servcie template
add_filter(
\'template_include\',
function( $template ) {
return my_service_template_slug() === $template ? \'page.php\' : $template;
},
11,
1
);
// Add data to service template head
add_action(
\'template_redirect\',
function(){
if ( is_page_template( my_service_template_slug() ) ) {
add_action( \'wp_head\', \'my_service_template_head_data\');
}
}
);
function my_service_template_head_data() {
// print something
}