这个single_template
过滤器将允许您为您的CPT使用任何模板文件,但您需要提供一些选择和存储模板名称或其他引用的方法,以使其成为动态解决方案。
内置的page
post type通过读取主题中的所有有效模板文件,并将该列表添加到meta box, 它将所选文件名存储在post meta中。
通过将文件名手动保存在Custom Field (post meta), 然后添加一个过滤器来检查当前帖子中的元键。下面是一个未经测试的快速示例,来自我在上面的评论中链接的另一个答案-
function wpa_single_cpt_template( $templates = \'\' ){
$single = get_queried_object();
if( \'files\' == $single->post_type ){
$template_name = get_post_meta( $single->ID, \'my_template_file\', \'true\' );
if( !empty( $template_name ) ){
$templates = locate_template( $template_name, false );
}
}
return $templates;
}
add_filter( \'single_template\', \'wpa_single_cpt_template\' );