在一个模板中列出两种帖子类型的帖子

时间:2014-07-24 作者:Girija Sankar Dash

我有两种帖子类型。一个是post &;另一个是event. 两者共享相同的类别;标签。我列出的职位archive.php. 现在,我通过两个不同的模板将帖子列为常规帖子,如archive.php / archive-event.php. 但现在我想在一个模板中列出它们,将帖子和按日期排序混合在一起。

所以任何人都会在这方面帮助我。

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

正如我在评论中已经提到的,您必须使用pre_get_posts 将自定义帖子类型添加到存档页面。

但有一件事你必须记住,这里有两个归档页面,归档。php和归档事件。php,所以is_archive() 将在两个页面上都返回true,这将改变两个页面。您需要排除存档事件。函数中的php。为此,您需要利用is_post_type_archive() 检查并排除该特定页面

对于可用于的所有可能参数pre_get_posts, 去看看WP_Query

function cpt_in_archive($query) {
  if ( !is_admin() && $query->is_main_query() && $query->is_archive() && $query->!is_post_type_archive( \'event\' )) {

      $query->set( \'post_type\', array( \'post\', \'event\' ) );
      $query->set( \'orderby\', \'date\' );

   }
}

add_action( \'pre_get_posts\' , \'cpt_in_archive\' );

结束

相关推荐

正在删除POSTS表中的过滤器下拉列表(在本例中为Yoast SEO)

我不需要一个帖子类型的Yoast SEO元框,所以我用remove\\u meta\\u box()删除了它。通过使用manage\\u edit-custom\\u post\\u columns取消设置列,删除了post表中不需要的列,但仍保留下拉列表。有没有办法去掉它?当然,使用jQuery并不是那么难,但也许WP中内置了过滤器或其他东西?