在Category.php上显示自定义帖子类型

时间:2013-10-01 14:14:22

标签: wordpress

我意识到这个问题已被问了一百万次,但我似乎无法找到我正在寻找的答案。

我找不到直接答案的第一个问题是我能否使用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开发有些新意,我真的需要把它搞定,因为这将是未来项目的一个很好的工具。

无论如何,任何帮助都将不胜感激!还有另一个注意事项是,无论如何只显示与管理员中的自定义帖子类型相关联的类别?目前,如果我在“投资组合发布”下选择“类别”,它也会显示您的标准博客文章类别。

非常感谢你!

4 个答案:

答案 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' );

我希望我有所帮助:]