问题描述

我想在主题文件夹中检查一个适当的模板,然后再回到我的 plugin 目录下的文件。这是我的代码:

add_filter('template_include', 'sermon_template_include');
function sermon_template_include($template) {
    if(get_query_var('post_type') == 'wpfc_sermon') {
        if ( is_archive() || is_search() ) :
           if(file_exists(TEMPLATEDIR . '/archive-wpfc_sermon.php'))
              return TEMPLATEDIR . '/archive-wpfc_sermon.php';
           return dirname(__FILE__) . '/views/archive-wpfc_sermon.php';
        else :
           if(file_exists(TEMPLATEDIR . '/single-wpfc_sermon.php'))
              return TEMPLATEDIR . '/single-wpfc_sermon.php';
           return dirname(__FILE__) . '/views/single-wpfc_sermon.php';
        endif;
    }
    return $template;
}

问题是,它不工作! 🙂 它总是在我的插件文件夹中选择文件。任何想法该怎么办?我尝试了很多变化,但我似乎无法做任何工作!提前致谢!插口

编辑

我期待从主题文件夹 (如果存在) 返回 archive-wpfc_sermon.php 。但是,我的插件中的文件总是被返回。谢谢你的帮助!这是从我的 Sermon Manager 插件在存储库中可用。

最佳解决方案

所以,我不知道究竟是什么导致的问题,但你可以尝试以下:

  1. 插件文件路径:用 plugin_dir_path( __FILE__ )替换 dirname(__FILE__)

  2. 主题文件路径:用 get_stylesheet_directory()替换 TEMPLATEDIR

这可能是直接引用常量的问题。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。