了解WordPress模板层次结构

时间:2016-03-16 作者:Vladyslav Turak

我在Udemy上看了很多关于Wordpress开发的课程。此外,我几乎已经完成了Teamtreehouse上的“Wordpress开发”课程,但我无法理解一件简单的事情,因为一门课程与另一门课程有点矛盾。

我的问题是关于page.php, content.phpsingle.php. 使用这些文件的最佳做法是什么?

例如,我需要创建一个公文包网站。据我所知,我需要:

创建page-portfolio.php 文件,这将是我的主要静态页面,我将显示所有的照片content-portfolio.php 将成为每张照片预览的文件single-portfolio.php 文件,这将是一个单一的贴子页为我的照片page-portfolio.php 我们需要创建一个loop 并执行get_template_part 具有的函数contentportfolio 作为参数。我是说get_template_part( \'content\', \'portfolio\' ).

  • 英寸single.php 我们需要创建一个循环并执行get_template_part( \'single\', get_post_format() ) 作用如果我们的自定义帖子portfolio 格式,这将是完美的工作page-portfolio.php 将为我们显示。关于这个page-portfolio.php 我们会有很多content-portfolio.php 项目(照片),当我们单击其中一个项目时single-portfolio.php 将显示为单数贴子页?我说得对吗?这是良好的做法吗?

    我看到了一些只使用content-slug.php 用于预览和单数贴子页面。Underscores 使用此做法。他们有一个content.php 对于两种情况。在这个文件中,他们选择要向用户显示的内容if statement. 类似这样:

        if ( is_single() ) {
            the_title( \'<h1 class="entry-title">\', \'</h1>\' );
        } else {
            the_title( \'<h2 class="entry-title"><a href="\' . esc_url( get_permalink() ) . \'" rel="bookmark">\', \'</a></h2>\' );
        }
    
    如果是预览,他们会显示h2 如果这是一个单一的贴子页面,他们会显示h1. 为什么他们不为此创建两个单独的文件?在一个文件中有一个预览页面和一个单独的帖子页面,这是一种好的做法吗?

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

    这里有一点前言。我假设您对帖子类型或模板一无所知,因为我不熟悉下划线或Teamtreehouse开发轨道。如果不在评论中进一步询问,希望下面的内容有助于澄清问题。

    WordPress以几个开头built-in post types 您已经熟悉的:

    支柱(支柱类型段塞:page )post )their own templates, 通常情况下,它们遵循以下原则:

    发布帖子home.phpindex.php 是您的存档页还是帖子列表archive.php 是其他一切(档案、类别、标签)的归宿single.php 是您的单一内容的未来所在

  • 页面front-page.php 将单个页面内容指定为主页
  • page.php 用于所有页面的默认模板page-{$slug}.php 用于通过其slug将特定页面作为目标
  • 您可以将上述内容用于normal loops 要显示您的内容,您不一定需要使用以下内容get_template_part() 这就是WordPress版本的PHP include().

    现在,你想用公文包做什么,你可能想建立自己的公文包Custom Post Type. 这些自定义帖子类型使用上述模板的变体:

    公文包(您的自定义帖子类型)-portfolio 将是鼻涕虫

    • archive-{post-type-slug}.php 是你的投资组合帖子列表的位置
      • archive.php 如果WordPress找不到上述模板,则将是回退
      • index.php 如果没有archive.php 然后WordPress将回退到此模板进行显示
    • single-{post-type-slug}.php 将是你的一个完整的投资组合职位
      • single.php 如果找不到上述模板,将是回退
    您将关闭{post-type-slug} 在上面的模板中使用您的post type slug,因此最终您将拥有:

    • archive-portfolio.phpsingle-portfolio.php
    现在,对于文章类型的静态页面,您有大量的选项,其中没有一个是对的或错的。

    1) 你可以为它创建一个实际的页面,调用它page-portfolio.php 但是你需要单独运行WP_Query() 因为WordPress不知道如何关联你的投资组合帖子page 与您一起发布类型portfolio 岗位类型。与全球Page Template 但你不需要追踪身份证或鼻涕虫。

    2) 您可以允许用户为您的帖子类型分配页面。类似于转到管理面板Settings -> Reading 以及指定首页和博客页。您可以将页面ID保存到数据库中archive-{post-type}.php 获取该页面的内容以显示它。

    我相信还有其他方法,每个人都有自己喜欢的方法。

    我并不反对使用上述使用模板部分分隔内容的方法,但我觉得对于初学者来说,简化的WordPress模板方法更容易掌握,这太复杂了。

    相关推荐