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