BioShip of course supports the default WordPress Template Hierarchy. So you can still implement these top level page templates overrides as you would in a standard theme (eg. page.php, home.php etc.)

Remember, due to the File Hierarchy, all template files parts are searched for in your Child Theme directory first. (This is ideally where you would be placing any customized templates anyway so they are all preserved in Parent Theme updates.) In all cases the Template Hierarchy will fall back to your Parent Theme (BioShip Framework) if there is no custom template found.

However, BioShip extends upon this default system in many different ways to make templating way more flexible. This of course could make it complex and unfamiliar as well - hence this guide is here to make it comprehensible!

First, by default, it uses a single index.php, loop-index.php and content/content.php to handle ALL page conditions. This keeps things super clean and means you can copy these default templates as starting points for custom ones. It also means if you prefer, there is no need at all use the template hierarchy - but it is available if needed. You can instead use the in-built combination of Value Filters and Layout Hooks for customizations. And since one of the most common thing a project needs is custom sidebars, for that see the Sidebar Guide.

Read on for deeper customizations, as you can override sublevel templates and parts at just about any level also... This is done by simply creating a template file with the proper naming convention to match the desired page condition. Again, none of these need to be used by default, but are made available for the most flexible template system possible.

Base Template Files

/wp-content/bioship/
header.phpDefault Header Template
index.phpDefault Index Template
loop-index.phpDefault Loop Template
footer.phpDefault Footer Template
There are several ways to change the loop, header and footer template that is used...
First you can make an unchanged copy of index.php (eg. page.php or archive.php)
and this will automatically load loop/page.php or loop-page.php (you could manually change it too.)
This will work for more specific templates too, eg. taxonomy-term.php would auto-load loop-taxonomy-term.php
Loop Templates
loop/{string}.phploop-{string}.php[Value Filter:string] skeleton_loop_template (no default)
loop/{filename}.phploop-{filename}.phpmatches base template filename eg. home.php -> loop-home.php
loop/{pagecontext}.phploop-{pagecontext}.phpfrontpage, home, 404, search
loop/{archivecontext}.phploop-{archivecontext}.php[archive only] category, taxonomy, tag, author, date, archive (fallback)
loop/{post-type}.phploop-{post-type}.php[singular only] {post-type}
loop/index.phploop-index.phpDefault Loop Template
HierarchyArray Filter[Value Filter:array] skeleton_loop_templates
Header Templates
header/{string}.phpheader-{string}.php[Value Filter:string] skeleton_header_template (no default)
header/{filename}.phpheader-{filename}.phpmatches base template filename, eg. home.php -> header-home.php
header/{pagecontext}.phpheader-{pagecontext}.phpfrontpage, home, 404, search
header/{archivecontext}.phpheader-{archivecontext}.php[archive only] category, taxonomy, tag, author, date, archive (fallback)
header/{pagecontext}.phpheader-{pagecontext}.php[singular only] {post-type}
header/index.phpheader-index.phpDefault Header Template
HierarchyArray Filter[Value Filter:array] skeleton_header_templates
Footer Templates
footer/{string}.phpfooter-{string}.php[Value Filter:string]skeleton_footer_template (no default)
footer/{filename}.phpfooter-{filename}.phpmatches base template filename, eg. home.php -> header-home.php
footer/{pagecontext}.phpfooter-{pagecontext}.phpfrontpage, home, 404, search
footer/{archivecontext}.phpfooter-{archivecontext}.php[archive only] category, taxonomy, tag, author, date, archive (fallback)
footer/{post-type}.phpfooter-{post-type}.php[singular only] {post-type}
footer/index.phpfooter-index.phpDefault Footer Template
HierarchyArray Filter[Value Filter:array] skeleton_footer_templates
The Content Template Hierarchy handles all different templates for Custom Post Types and Post Formats.
In other words, if a specific matching template is not found, it falls back to the first one that is found.
Note: For consistency, the Hybrid content template hierarchy whether full Hybrid Core is activated or not.

Content Template Hierarchy

content/attachment-{mimetype}.phpcontent-attachment-{mimetype}.phpif is_attachment()
content/{posttype}-{postformat}.phpcontent-{posttype}-{postformat}.phpcombination of post type and post format
content/{postformat}.phpcontent-{postformat}.phpaside, audio, chat, image, gallery, link, quote, status, video
content/{posttype}.phpcontent-{posttype}.phppost, page or other custom post type
content.phpcontent/content.phpDefault Content Template
HierarchyArray Filter[Value Filter:array] hybrid_content_hierarchy
DirectoryString Filter[Value Filter:string] skeleton_content_template_directory
If you wish to use a split hierarchy you can optionally create and use an /archive/ template directory also.
Again, this hierarchy falls back to the Content Template Hierarchy after, which handles all page conditions.

Archive Template Hierarchy

(optional)
archive/attachment-{mimetype}.phpoptional template directoryif is_attachment()
archive/{posttype}-{postformat}.phpoptional template directorycombination of post type and post format
archive/{postformat}.phpoptional template directoryaside, audio, chat, image, gallery, link, quote, status, video
archive/{posttype}.phpoptional template directorypost, page or other custom post type
archive/content.phpoptional template directoryArchive Content Template
DirectoryString Filter[Value Filter:string] skeleton_archive_template_directory

Other Content Templates

/wp-content/bioship/content/
author-bio.phpDefault Author Bio Template
loop-nav.phpDefault Loop Navigation Template
loop-meta.phpDefault Loop Meta Template
error.phpDefault Error Page Template

Comments Template Hierarchy

/wp-content/bioship/content/
comments-{posttype}-{postformat}.php[not implemented yet]
comments-{postformat}.php[not implemented yet]
comments-{posttype}.phpCustom Post Type Comments Template
comments.phpDefault Main Comments Template
comments-nav.phpDefault Comments Navigation Template
comments-error.phpDefault Comments Error Template

Sidebar Template Hierarchy

/wp-content/bioship/sidebar/
Sidebar and SubSidebar Templates are available by default for all sidebar contexts.
see the BioShip Sidebar Guide for more detailed information.
Third Party Templates
/wp-content/bioship/templates/
/templates/ajax-load-more/AJAX Load More Repeater Templatecopy/paste into Repeater Template field
/templates/theme-my-login/Theme My Login Templatesmodified for Theme Integration
/templates/woocommerce/Alternative WooCommerce Templatescan be used instead of the default /woocommerce/
/templates/skeleton/Legacy Skeleton Templatesfor reference only [deprecated]
← Previous: File Guide and HierarchyBack to Documentation Index