我意识到这个问题已被问了一百万次,但我似乎无法找到我正在寻找的答案。
我找不到直接答案的第一个问题是我能否使用category.php来显示自定义帖子类型?
如果是,那怎么样?
我有一个单一的自定义post-type.php - 效果很好,与arhcive-custom-post-type.php一样,但我确信你经历过WordPress的开发人员知道一旦我点击'custom-post -type'类别列出'普通'帖子类型,而不是自定义帖子类型。
例如我有一个名为'portfolio-post'的自定义帖子类型我目前有两个类别叫做'book cover'和'theatrical'。我知道我可以创建category-custom-post-type.php页面,但每次我的客户决定创建新的投资组合类别时,我都会尽量避免进入并创建新页面。
因此,如果我可以修改category.php来处理自定义帖子类型,那将是理想的。我对WP开发有些新意,我真的需要把它搞定,因为这将是未来项目的一个很好的工具。
无论如何,任何帮助都将不胜感激!还有另一个注意事项是,无论如何只显示与管理员中的自定义帖子类型相关联的类别?目前,如果我在“投资组合发布”下选择“类别”,它也会显示您的标准博客文章类别。
非常感谢你!
答案 0 :(得分:1)
我没有对此进行测试,但您可以在category.php
中找到类似的条件语句:
if ('portfolio-post' == get_post_type()) {
// code for the custom post
}
如果有效,请告诉我......我很好奇:)
答案 1 :(得分:1)
这是一种更好的方法:
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();
答案 2 :(得分:0)
我发现解决方案很高兴知道是否有更有效的方法。
<?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(); ?>
答案 3 :(得分:0)
在 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' );
我希望我有所帮助:]