WordPress 主题 php 后备搬迁

WordPress Theme php fallback relocate

考虑到 WordPress 回退机制,我们知道我们必须将文件放在主题的根目录中,假设我们有一个名为 gallery 的自定义 post 类型,为此,需要创建archive-gallery.php 作为自定义 post 类型存档页面以使其成为自定义视图。

现在的问题是,我们如何将这个 archive-gallery.php 文件移动到 主题目录之外,因为我们正在创建一个像 gallery 这样的插件,并且想要在用户直接或作为插件包含它时创建默认视图。

此外,这可用于减少主题根目录中的文件,特别是当我们有自定义组织系统或使用 composer 时

是的,你可以使用模板包含钩子

add_filter( 'template_include', 'default_template', 99 );

function default_template( $template ) {

    if ( is_singular( array( 'cpt1', 'cpt2' ) ) ) {
        $template= '/path/archive-gallery.php' 
    } // also is_archive() etc...

    /*
        another method:
        $file = basename($template);
        $default_folder= '/path/';
        if(file_exists($default_folder.$file)){
            $template= $default_folder.$file;

        }
    */

    return $template;
}