如何在插件中为自定义帖子类型设置回退模板?

时间:2012-07-03 作者:willbeeler

我的自定义插件创建了一个自定义帖子类型,我想为我自己的帖子设置主题"single-my_custom_cpt.php" 文件但是,我想将其存储在我的插件文件夹中,并允许它覆盖在网站的活动主题文件夹中。

例如,single-my\\u custom\\u cpt。php存在于/plugins/my-plugin/ 文件夹,然后有人创建/themes/site-theme/single-my_custom_cpt.php. 我希望首先显示主题文件,如果删除了,则显示插件文件。

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

提供可由主题挂钩覆盖的默认模板template_include 就像链接的问题所暗示的那样。你得到了WordPress想要用作参数的模板。如果这不是您想要的文件,请将其替换为您插件的文件:

add_filter( \'template_include\', \'wpse_57232_render_cpt\', 100 );

/**
 * Provide fall back template file for a custom post type single view.
 *
 * @return void
 */
function wpse_57232_render_cpt( $template )
{
    // Our custom post type.
    $post_type = \'my_custom_cpt\';

    // WordPress has already found the correct template in the theme.
    if ( FALSE !== strpos( $template, "/single-$post_type.php" ) )
    {
        // return the template in theme  
        return $template;
    }

    // Send our plugin file.
    if ( is_singular() && $post_type === get_post_type( $GLOBALS[\'post\'] ) )
    {
        // return plugin file
        return dirname( __FILE__ ) . "/single-$post_type.php";
    }

    // Not our post type single view.
    return $template;
}

结束

相关推荐

Enable page templates. How?

基本问题,但我想启用页面模板。我有一个启用了页面模板的主题。我切换到了另一个模板,但没有更改模板的选项,即使在创建新页面时也是如此。如何打开此选项?我在抄本和论坛上找到了根,但找不到。