0

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

我找不到直接答案的第一个问题是我可以使用 category.php 来显示自定义帖子类型吗?

如果是,那怎么办?

我有一个 single-custom-post-type.php - 可以完美地工作,与 arhcive-custom-post-type.php 一样,但我相信你有经验的 WordPress 开发人员一旦我点击“custom-post-type”就知道类别它列出“正常”帖子类型,而不是自定义帖子类型。

例如,我有一个名为“portfolio-post”的自定义帖子类型,我目前有两个类别,称为“书籍封面”和“戏剧”。我知道我可以创建 category-custom-post-type.php 页面,但我试图避免每次我的客户决定创建一个新的投资组合类别时都必须进入并创建一个新页面。

因此,如果我可以修改 category.php 来处理自定义帖子类型,那将是理想的。我对 WP 开发有点陌生,我真的需要把它写下来,因为这将是未来项目的一个很好的工具。

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

太感谢了!

4

4 回答 4

2

这是一个更好的方法:

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();
于 2013-12-15T11:11:41.640 回答
1

我没有对此进行测试,但您可以在您的category.php:

if ('portfolio-post' == get_post_type()) {
  // code for the custom post
}

请让我知道这是否有效......我很好奇:)

于 2013-10-01T16:06:48.347 回答
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(); ?>

于 2013-10-01T15:51:49.463 回答
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' );

我希望我有帮助:]

于 2017-06-28T15:51:00.597 回答