嗨,我对文件名有疑问。如果我有自定义帖子类型,我可以创建模板,例如single-portfolio.php
然后把公文包帖子的内容放到这个文件中,但我需要把那个帖子放到不同的文件中,例如,我想把它放到各个文件中single-portfolio-post1.php
像这样的东西,但我创建的第二个文件不起作用,我该怎么做?
非常感谢。
嗨,我对文件名有疑问。如果我有自定义帖子类型,我可以创建模板,例如single-portfolio.php
然后把公文包帖子的内容放到这个文件中,但我需要把那个帖子放到不同的文件中,例如,我想把它放到各个文件中single-portfolio-post1.php
像这样的东西,但我创建的第二个文件不起作用,我该怎么做?
非常感谢。
您可以使用动态过滤器{type}_template
(其中{type}
是当前查询类型,例如。single
, index
等)中找到get_query_template()
:
function wpse_204848_get_id_template( $template ) {
if ( $post = get_queried_object() ) {
if ( $_template = locate_template( "single-{$post->post_type}-{$post->ID}.php" ) )
$template = $_template;
}
return $template;
}
add_filter( \'single_template\', \'wpse_204848_get_id_template\' );
对于ID的公文包帖子5
, 它将使用模板single-portfolio-5.php
如果存在。page
岗位类型。相反,您必须将条件逻辑放在single-portfolio.php
.
I would also recommend you use meta options, terms, or the post slug instead of the ID.If you use post IDs, a simple import and export of the content would break your theme.
还可以考虑使用下拉菜单实现一个元盒,该下拉菜单允许您选择模板。这样,您就不必在主题中限制自己和硬编码内容,并且可以为某些公文包项目构建可重用的通用模板single-{post_type}-{post_name}.php
从r34800起,新的主题模板已添加到主题层次结构中:single-{post\\u type}-{post\\u name}。php。此模板遵循is\\u single()的规则,用于单个帖子或自定义帖子类型。它对于在自定义帖子类型中定位特定帖子非常有用,并为页面和分类提供了模板一致性。它排在单身之前。php和single-{post\\u type}。php。也不要忘记,在WordPress 4.3单数中。引入了php,并修复了附件模板的层次结构。
与其他人的回答稍有不同
如果你对一篇特定的文章有不同的设计,最好在尝试编写新模板之前,先看看你能用CSS做些什么。
问题仍然是,如何确定哪些内容应该与设计A搭配,哪些内容应该与设计B搭配,我认为最好的做法是添加一个元框,在其中可以选择设计并采用您的sing{post type}。php代码将其考虑在内。如果非常不同,那么可以将代码放在不同的文件中,但这里的重点是让管理员控制所使用的模板。
将控制权交给管理员的原因是,您可能希望重用模板,ID和slug等内容可能会更改(尤其是slug)
是否有任何内置方法可以根据浏览器大小显示不同的模板(即移动设备检测)?我做了一些研究,我能找到的只是大量插件,它们的功能远远超出了我的需要。我基本上只需要一种方法,将移动目录添加到我的主题中,并为移动用户显示该主题。