使用template_include
(正如布拉德·道尔顿所建议的那样)编辑页面时,只在前端更改页面模板,而不在管理中更改。
另一方面,在渲染元盒之前更改post对象中的值,正如Czersplace所建议的那样,非常有效!我添加了一个检查,以仅在以下情况下应用此$post->page_template
未设置,如下所示:
function wpse196289_default_page_template() {
global $post;
if ( \'page\' == $post->post_type
&& 0 != count( get_page_templates( $post ) )
&& get_option( \'page_for_posts\' ) != $post->ID // Not the page for listing posts
&& \'\' == $post->page_template // Only when page_template is not set
) {
$post->page_template = "page-mytemplate.php";
}
}
add_action(\'add_meta_boxes\', \'wpse196289_default_page_template\', 1);