有两种不同的方法来实现您想要做的事情,根据您的需要,这两种方法都是完全有效的:
此实现使用the WordPress template hierarchy 为自定义帖子类型输出存档索引页。对于custom post type archive index pages, 模板层次结构为:
archive-{posttype}.php
archive.php
index.php
因此,如果您想为自定义帖子类型的存档索引页创建自定义布局/标记,请创建
archive-{posttype}.php
.
此实现的优点是,您不必对默认查询进行任何更改。您只需输出一个法线循环,就可以$post
您可以使用现成的变量、条件和标记。
到view 自定义帖子类型的存档索引页,如果启用了永久链接,请使用:home_url() . \'/{posttype}/
, e、 g。www.example.com/{posttype}/
.
此实现将允许您在特定页面上显示自定义帖子类型,例如。www.example.com/pagename
, 但有几个缺点:
实施起来更加困难。
哪里archive-{posttype}.php
由WordPress自动使用/显示,要使用自定义页面模板,您必须创建静态页面,然后将自定义页面模板分配给该页面,然后发布该页面。
这更难发展。
不像archive-{posttype}.php
, 自定义页面模板中的自定义查询循环不使用默认查询,并且不具有所有正常的$post
变量、条件和标记可用。
您必须通过以下方式定义辅助查询:WP_Query()
您必须使用自定义循环实例化标记。
如果要使用分页,则必须使用变通方法。
也就是说,这里有一个快速而脏的自定义页面模板:
/**
* Template name: Custom Post Type Display
*/
get_header();
$cpt_query_args = array(
\'post_type\' => \'foobar\',
\'posts_per_page\' => \'10\'
)
$cpt_query = new WP_Query( $cpt_query_args );
if ( $cpt_query->have_posts() ) : while ( $cpt_query->have_posts() ) : $cpt_query->the_post();
// Loop output here
// You CAN use normal post tags here,
// such as the_title(), the_content(), etc.
endwhile; endif;
// Reset postdata
wp_reset_postdata();
get_footer();
(有关使用自定义页面模板显示自定义循环查询,尤其是自定义查询循环分页的详细答案,请在WPSE中搜索相关问题/答案。)