包括自定义帖子类型单个模板,但如果存在模板主题覆盖

时间:2020-11-15 作者:Trees4theForest

通过插件,我创建了一个名为“quot;my\\u custom(我的自定义);。

也通过插件,我成功地包含了一个模板,用于显示;“单个”;我的自定义帖子类型的项目:

function get_single_custom_template( $single_template ) {
    global $post;

    if ( \'my_custom\' === $post->post_type ) {
            $single_template = PLUGIN_TEMPLATE_DIR . \'default-custom-single.php\';
    }

    return $single_template;
}
add_filter( \'single_template\', \'get_single_custom_template\' ); 
正如预期的那样:我的default-custom-single.php 对于单个条目显示;my\\u custom“我的自定义”;岗位类型。

但是,我希望能够允许主题覆盖我的默认设置,并根据需要创建自己的模板。

如何检查是否存在预先存在的custom-single.php 在一个主题中,只添加我的插件提供的模板,如果它不存在?

1 个回复
最合适的回答,由SO网友:Howdy_McGee 整理而成

您可以使用locate_template() 第一如果返回的不是空字符串\'\' 然后模板存在于父主题或子主题中。

if( \'\' === locate_template( \'custom-single.php\' ) ) {
    // Replace given template with your template path.
}

相关推荐

Updating modified templates

我想调整一些。php模板文件在我的WordPress主题中,我知道正确的过程是将相关文件复制到子主题文件夹中并在那里编辑文件,这样我的修改就不会在将来的主题更新中丢失。但这是否意味着我将无法从主题更新中获益,因为我将文件放在了我的子主题文件夹中?这可能不是一件好事,因为主题更新可能添加了一些有用的特性,甚至修复了我最初需要对代码进行调整的问题!这方面的常见解决方案是什么?有人推荐了一款Diff应用程序——这是人们常用的吗?