如何修改带有PRE_GET_POSTS的档案查询以追加CPT?

时间:2016-08-15 作者:Diogo Bento

如果我使用pre_get_posts 这边

function ef_company_query($query) {
  if ( !is_admin() && $query->is_main_query() && $query->is_post_type_archive( \'company\' ) ) {
    $query->set(\'post_type\', array( \'company\', \'mission\', \'values\', \'staff\' ) );
  }
}

add_action(\'pre_get_posts\',\'ef_company_query\');
wordpress似乎不会加载存档公司。php但存档。php。

我应该如何使用pre_get_posts 要将额外的CPT附加到存档页吗?

EDIT 1

我提到了档案公司。php,因为我想在URL www.website加载额外的CPT。com/公司。

EDIT 2

我对任何基于URL www.website提取特定模板的解决方案都持开放态度。com/公司,并允许添加额外的CPT(最好通过pre_get_posts, 性能方面)。

EDIT 3

想把事情弄清楚!

我希望能够在URL www.website上加载多个CPT。com/公司。

我应该/可以使用哪个模板pre_get_posts, 性能方面)我在尽量避免使用new WP_Query() 页面中有多个循环。

1 个回复
SO网友:Rarst

您似乎认为它将为多个帖子类型的第一个获取归档。但为什么呢?在这种情况下,顺序并不表示任何类型的优先级。

WP似乎也认为这是合乎逻辑的。如果你看看get_archive_template() 只有当查询中只有一个帖子类型时,才会考虑单个模板。

查询中的多个帖子类型将导致archive.php 加载,正如您所观察到的。

如果要加载更具体的模板,还需要通过过滤器覆盖该模板,例如archive_template 一(动态一英寸)get_query_template()).

相关推荐

将wp_Query替换为wp_User_Query

我在插件中制作了一些订阅者档案和单曲(个人资料页),其中我还包括了一个“用户单曲”模板,通过template_include. 不过,我正在尝试从插件中删除一些模板,以使其使用主题模板。我用了locate_template( \'single.php\' ) 从活动主题中选择单个模板。我没有使用全局wp_query 在本例中显示我的内容,但页面显示了基于查询默认值的循环(十篇帖子)。我想知道的是,我是否可以完全放弃默认查询,用wp_user_query 我可以将查询到的用户ID输入其中。然后我想筛选the