如何让自定义帖子类型在插件中获得自定义帖子模板

时间:2014-08-15 作者:Sandeep

我正在编写一个插件,其中我使用register\\u post\\u type添加了一个自定义post类型(称为“事件”)。此外,我希望它使用单个事件。php而不是常规的单一。php。插件文件夹的当前结构为:

插件主文件。php单一事件。我知道如果我把它放在我的主题目录中是可能的,但我希望它放在插件中并利用它。我该怎么做?有没有自定义功能?

2 个回复
最合适的回答,由SO网友:Brad Dalton 整理而成

function get_custom_post_type_template($single_template) {
     global $post;

     if ($post->post_type == \'events\') {
          $single_template = dirname( __FILE__ ) . \'/single-event.php\';
     }
     return $single_template;
}
add_filter( \'single_template\', \'get_custom_post_type_template\' );
Source

或者您可以使用:

add_filter( \'template_include\', \'single_event_template\', 99 );

function single_event_template( $template ) {

    if ( is_singular(\'event\') ) {
        $new_template = locate_template( array( \'single-event.php\' ) );
        if ( \'\' != $new_template ) {
            return $new_template ;
        }
    }

    return $template;
}

Source

或者你可以使用locate_template

SO网友:Bryan Willis

这是我一直在做的事。不确定您是否同时需要$wp\\u query和$post,但这对我一直都很有用。

把这个放进去plugin-main-file.php

/**
 * Add single template for events post type plugin
 */
function custom_template_events_post_type_plugin($single) {
      global $wp_query, $post;
      if ($post->post_type == "events"){
        $template = dirname( __FILE__ ) . \'/single-event.php\';
        if(file_exists( $template ))
            return $template;
      }
        return $single;
    }
    add_filter(\'single_template\', \'custom_template_events_post_type_plugin\');

结束

相关推荐