我意识到这个问题已经被问了一百万次,但我似乎找不到我正在寻找的答案。
我找不到直接答案的第一个问题是我可以使用category.php来显示自定义帖子类型吗?
如果是这样那怎么办?
我有一个 single-custom-post-type.php - 工作完美,与 arhcive-custom-post-type.php 相同,但我确信一旦我点击“custom-post-type”,经验丰富的 WordPress 开发人员就会知道' 类别列出了“正常”帖子类型,而不是自定义帖子类型。
例如,我有一个名为“组合帖子”的自定义帖子类型,我目前有两个类别,称为“书籍封面”和“戏剧”。我知道我可以创建category-custom-post-type.php页面,但我试图避免每次我的客户决定创建新的投资组合类别时都必须进入并创建一个新页面。
因此,如果我可以修改category.php来处理自定义帖子类型,那就太理想了。我对 WP 开发有点陌生,我真的需要把它记下来,因为这将是未来项目的一个很好的工具。
无论如何,任何帮助将不胜感激!另外,还有没有办法只显示与管理员中的自定义帖子类型相关的类别?目前,如果我在“作品集帖子”下选择“类别”,它也会显示您的标准博客文章类别。
非常感谢!
这是一个更好的方法:
global $wp_query;
$query = new WP_Query(array_merge(
$wp_query->query,
array(
'post_type' => 'any'
)
));
while($query->have_posts()) : $query->the_post();
endwhile; wp_reset_query();
我没有测试这个,但你可以在你的
category.php
: 中有一个像这样的条件语句
if ('portfolio-post' == get_post_type()) {
// code for the custom post
}
请告诉我这是否有效...我很好奇:)
我找到了一个解决方案,很高兴知道是否有更有效的方法。
<?php global $wp_query;
$args = array_merge( $wp_query->query, array( 'post_type' => 'any' ) );
query_posts( $args );
?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
在 functions.php 中添加函数:
function changePost_type() {
if( is_archive() && !is_admin() ) {
set_query_var( 'post_type', array( 'page', 'portfolio-post' ) );
}
return;
}
add_action( 'parse_query', 'changePost_type' );
我希望我有所帮助:]