如何从插件中使用定制帖子类型的专用模板?

时间:2013-09-28 作者:sleeper

我正在努力this tutorial 在自定义帖子类型(插件中)上,作者演示了如何force the use of a dedicated template for the Custom Post Type. 提交人这样说:

代码(以下)搜索模板single-movie-reviews.php 在当前主题目录中。如果没有找到,那么它会查找模板的插件目录,我们将其作为插件的一部分提供。template\\u include挂钩用于更改默认行为并强制执行特定模板。

Step 1: Added this code to my plugin-name.php file

add_filter( \'template_include\', \'include_reviews_template\', 1 );
function include_reviews_template(){
    if ( get_post_type() == \'reviews\' ) {
        if ( is_single() ) {
            // checks if the file exists in the theme first,
            // otherwise serve the file from the plugin
            if ( $theme_file = locate_template( array( \'single-movie-reviews.php\' ) ) ) {
                    $template_path = $theme_file;
                } else {
                    $template_path = plugin_dir_path( __FILE__ ) . \'/templates/single-movie-reviews.php\';
            }
        }
    }
    return $template_path;
}

Step 2: Create the single-{custom-post-type}.php file.

接下来,我创建了single-movie-reviews.php 文件并将其添加到\'/my-plugin/templates/\' 目录

作者补充了以下内容:

Note: 您需要创建一个新页面from the dashboard 使用新创建的模板。

The Problems

<当我访问使用自定义帖子类型创建的帖子时,页面模板不会显示在仪表板中does show 使用插件中的页面模板的帖子。However... 每隔一页(即页数NOT 使用CPT)现在显示a blank white screen (好像找不到合适的模板来使用)

请告知

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

更改此行:

function include_reviews_template(){
对此:

function include_reviews_template( $template_path ) {
何时get_post_type() == \'reviews\' 如果为false,则返回未设置的变量($template_path). 此更改应发送WordPress传递给函数的值。

结束