如何为定制帖子类型的父页面创建模板文件

时间:2013-01-14 作者:Desmond

创建自定义帖子类型后,我为帖子创建了一个自定义模板文件(single-customposttypename.php). 因此URL结构将是:example.com/page/postname, 和postname 将是呈现single-custompostype.php (这很好)。

但我想得到的是example.com/PAGE 要在一个页面上循环从该自定义帖子类型生成的所有帖子。。。确实如此,但它没有样式。我尝试创建一个名为page-customposttypename.php 但这似乎不起作用。

看起来这应该很简单,但我似乎无法理解。有人能给我指出正确的方向吗?

2 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

有两种不同的方法来实现您想要做的事情,根据您的需要,这两种方法都是完全有效的:

此实现使用the WordPress template hierarchy 为自定义帖子类型输出存档索引页。对于custom post type archive index pages, 模板层次结构为:

  1. archive-{posttype}.php
  2. archive.php
  3. index.php
因此,如果您想为自定义帖子类型的存档索引页创建自定义布局/标记,请创建archive-{posttype}.php.

此实现的优点是,您不必对默认查询进行任何更改。您只需输出一个法线循环,就可以$post 您可以使用现成的变量、条件和标记。

view 自定义帖子类型的存档索引页,如果启用了永久链接,请使用:home_url() . \'/{posttype}/, e、 g。www.example.com/{posttype}/.

此实现使用的自定义页面模板WordPress custom page templates 为自定义帖子类型输出帖子的自定义查询循环。

此实现将允许您在特定页面上显示自定义帖子类型,例如。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中搜索相关问题/答案。)

SO网友:diggy

codex: 如果自定义帖子类型为“product”,WordPress将查找归档产品。php来显示帖子的存档。

结束

相关推荐

Custom Page Templates

我正在尝试找到添加页面模板的功能。我正在添加存档,但当我进入页面->添加新->时,我在侧栏中没有使用现有存档的选项。我想使用的php文件。有人能帮我吗?