只要您只处理一个CPT,当您注册帖子类型时,请确保设置has_archive
至true和rewrite
到array(\'slug\' => \'resources\')
. 这样,您就可以通过编程方式创建存档。
(如果您没有设置has_archive
首次注册CPT时,您可能需要unregister_post_type()
它不会删除您的帖子,但会将其清除,然后用新设置重新注册。最后,访问永久链接设置页面以刷新永久链接。)
然后,在子主题或自定义主题中,创建一个名为archive-resources.php
. 这是您可以截取查询字符串并适当响应的地方。基本结构如下:
<?php
// if the query string is present
if($_GET[\'type\']) {
get_header();
// run your tax query here
$args = array(
\'post_type\' => \'post\',
// tax query is an array of arrays
\'tax_query\' => array(
array(
\'taxonomy\' => \'type\',
// you can pull various ways; this uses the slug i.e. \'white-paper\'
\'field\' => \'slug\',
\'terms\' => $_GET[\'type\']
)
)
);
$posts = new WP_Query($args);
if($posts->have_posts()) {
while($posts->have_posts()): $posts->the_post();
// your loop here
endwhile;
}
get_footer();
} else {
// what to do if no query string is present
// example: you could redirect elsewhere, or show a default taxonomy query
}
缺点是存档将运行默认查询,因此基本上是将该查询的结果抛出窗口,然后运行自己的查询。您可以在
else
条件并利用它,因为它无论如何都会运行。