使用GET_TEMPLATE_PART根据当前帖子类型检索模板文件

时间:2013-01-29 作者:Alex V.

我正在尝试使用get\\u template\\u part根据用户所在的当前帖子类型(slug)检索模板文件。模板文件只包含特定于特定帖子类型使用的图像。

<?php get_template_part(\'parts/get_post_type( $post )\') ?><p id="t3-splash-title"><?php $post_type = get_post_type_object( get_post_type($post) ); echo $post_type->labels->singular_name ; ?></p>
上面的内容并没有破坏页面,但似乎什么都没有得到输出。不知道我做错了什么。

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

built in support 为了这个,有点。虽然我没有发现您的代码有任何问题,但请尝试在表单上命名您的文件archive-mytype.php, content-mytype.php 等,然后打电话get_template_part 像这样:

<!--  This will result in including parts/content-mytype.php -->
<?php get_template_part(\'parts/content\', get_post_type( $post )); ?>
<p id="t3-splash-title"><?php $post_type = get_post_type_object( get_post_type($post) ); echo $post_type->labels->singular_name ; ?></p>

SO网友:s_ha_dum

这里的问题部分是糟糕的PHP,部分是对get_template_part.

您实际上需要一个名为“parts/get\\u post\\u type($post)”的文件。更靠近右边的是。。。

get_template_part(\'parts/\'.get_post_type( $post ));
get_post_type 返回aboolean 如果失败了,我会倾向于这样。。。

$type = get_post_type($post);
if (!empty($post)) {
   get_template_part(\'parts/\'.$type ));
} else {
  // something or nothing; your choice
}
现在get_template_part 将查找类似“parts/-post-type.php”的文件名。它寻找{slug}-{$name}, 或者参数1-2,这可能不是您想要的。我认为您的文件实际上是“parts/post-type.php”,因此您需要重新考虑命名方案。

结束

相关推荐