使用插件文件夹中的Single.php,而不是默认的模板文件夹 时间:2015-11-30 作者:user3428971 我在想怎么用另一支单曲。我正在制作一个定制插件的php。这是一个自定义的帖子类型。因为如果人们安装这个插件,他们就不会有定制的单一产品。php在其主题文件夹中。这就是为什么我希望它在插件文件夹中。有没有办法更改此自定义帖子类型的single的路径。php或安装此插件后自动在主题文件夹中生成文件的方法?提前感谢 3 个回复 最合适的回答,由SO网友:flomei 整理而成 我想一个钩子template_include 喜欢described here 这可能是一个正确的方法。代码可以如下所示:add_filter(\'template_include\', \'my_plugin_templates\'); function my_plugin_templates( $template ) { $post_types = array(\'post\'); if (is_singular($post_types)) { $template = \'path/to/singular/template/in/plugin/folder.php\'; } return $template; } SO网友:Mark Kaplun 插件不应该有任何不是小部件或短代码的视觉效果。如果你觉得有必要操纵主题文件,那么你很可能做错了。*总会有例外,比如针对特定主题或做一些与主题无关的事情(如弹出窗口/灯箱),以至于几乎没有机会打破主题或得到糟糕的结果。根据评论编辑这是一个边界线问题,没有任何白/黑类型的答案。根据你的描述,你应该做一个主题,而不是插件,但我知道你被分配了任务。正确的方法就像woocommerce一样-短代码和小部件显示作为CPT管理的内容,否则您很可能无法很好地处理所有主题 SO网友:kamleshpal 哪里get_custom_post_type_template 是WordPress在检索内容时应调用的函数。请注意,插件定义的过滤器函数必须返回模板文件的完整路径,否则生成的页面将为空。模板文件的条目应与single.php 文件在主题中有。For more information visit the site. <?php function get_custom_post_type_template($single_template) { global $post; if ($post->post_type == \'my_post_type\') { $single_template = dirname( __FILE__ ) . \'/post-type-template.php\'; } return $single_template; } add_filter( \'single_template\', \'get_custom_post_type_template\' ); ?> 文章导航