WordPress 插件自定义帖子类型单页

Dom*_*len 3 php wordpress

我正在开发一个创建自定义帖子类型的 WordPress 插件。该自定义帖子类型将需要它自己的 single.php 页面。我知道我可以在主题中创建一个名为 single-{custom post type}.php 的文件,但我需要该文件位于插件目录本身中。如何让 WordPress 识别出我想使用插件目录中的 single-posttype.php 而不是主题目录?

Xhy*_*ynk 6

这是我使用的,只需替换dirname(__FILE__) .'/templates/为您拥有的任何目录结构即可。这样做的好处是,如果您在该位置没有“覆盖”文件,它将默认使用正确的主题文件$file

add_filter( 'single_template', 'override_single_template' );
function override_single_template( $single_template ){
    global $post;

    $file = dirname(__FILE__) .'/templates/single-'. $post->post_type .'.php';

    if( file_exists( $file ) ) $single_template = $file;

    return $single_template;
}
Run Code Online (Sandbox Code Playgroud)

当然你也可以做同样的事情

archive_template
Run Code Online (Sandbox Code Playgroud)

 $file = dirname(__FILE__) .'/templates/archive-'. $post->post_type .'.php';
Run Code Online (Sandbox Code Playgroud)