BioShip uses an extended file hierarchy so you can easily override any of the Core Theme Files, Javascript and CSS Stylesheets by copying the existing files to your Child Theme and modifying them.

You can also override any Page Templates, Content Templates, Sidebar Templates etc. or create new ones for Custom Post Types or Post Formats etc. (see the Template Hierarchy Guide for further details on those.)

BioShip File Hierarchy

The file hierarchy will search for the file in this order and use the first matching file it finds:

  1. the Child Theme subdirectories (if relevant)
  2. the main Child Theme directory (ie. 'Stylesheet' directory)
  3. the Parent Theme subdirectories (if relevant)
  4. then main Parent Theme directory (ie. 'Template' directory)
For example, this allows you to override the Parent Theme (Framework) Stylesheets, Javascripts or Images with ease...

CSS Stylesheets
eg. copy /bioship/styles/stylesheet.css to /child-theme/styles/stylesheet.css
(or if you prefer, you can also use /css/ or /assets/css/ instead, eg. /child-theme/css/stylesheet.css)
[Note: custom.css will be auto-loaded if found in either child or parent theme.]
eg. copy /bioship/javascripts/scriptname.js to /child-theme/javascripts/scriptname.js
(or if you prefer, you can also use /js/ or /assets/js/ instead, eg. /child-theme/js/scriptname.js)
[Note: custom.js will be auto-loaded if found in either child or parent theme.]
eg. copy /bioship/image/image.png to /child-theme/image/image.png
(or if you prefer, you can also use /img/ or /assets/img/ instead, eg. /child-theme/img/image.png)
[Note: gravatar.png will be used for default Gravatar if found in either child or parent theme.]

Core Theme File Hierarchy

The File Hierarchy also allows you to override Core Theme Files, though in most cases this would be unnecessary, as generally speaking you would leave these alone for Parent Theme updates and modify individual functions instead.

All the core theme functions have been made pluggable (overrideable) - with minor exceptions (see below.) (In other words each function declaration is wrapped in conditional function_exists checks to make this possible.) So to override any function, simply place a modified copy of it in your Child Theme's functions.php file, As WordPress intentionally loads this file before the Parent Theme's functions.php, the modified function will be loaded instead of the default Parent Theme (Framework) function. (see Child Themes on the WordPress Codex.)

(Note: although that is the preffered method, you may still use the File Hierarchy for development overrides however. For example, if you have found and fixed a bug in the Parent Theme skin.php or grid.php. As these files do not contain pluggable functions, you can put a modified copy of any of them in your Child Theme instead and report the bug for the next BioShip update, then recheck those fixes when the update comes out.)

Core Theme Files

Theme Setup Files
functions.phpTheme Setup and Loader
options.phpTheme Options and Fonts
hooks.phpLayout Hooks and Labels[Definitions with Value Filter: skeleton_theme_hooks]
compat.phpTheme Backwards Compatibility
Core Layer Files
skull.phpTheme Helpers and Head Setup
skeleton.phpSkeleton Page Templating Functions
muscle.phpMuscle Extended Theme Functions
skin.phpSkin Dynamic CSS Styles Output[standalone, functions not pluggable]
grid.phpGrid System Dynamic CSS Output[standalone, functions not pluggable]
Admin Files
admin/admin.phpAdmin-only Functions
admin/customizer.phpCustomizer Integration
admin/tracer.phpTheme Function Debug Tracer
admin/docs.phpDocumentation Generator

Default Template Files

(see Template Hierarchy Guide for much more detailed information.)
Base Templates
header.phpDefault Header Template
index.phpDefault Index Template
loop-index.phpDefault Loop Template
footer.phpDefault Footer Template
Template Directories
/content/Content Templates
/content/format/Post Format Templates
/sidebar/Sidebar Templates
/templates/Third Party Templates

Library Hierarchy

While the File Hierarchy also works for included libraries, if you want to use it for modifying a library, you will need to copy the entire library directory and subdirectories to your Child Theme to do so. This is because it will find the library loader file path and the library will load files relative to that.

Library Directories
/includes/Default Includes
/includes/titan/Titan Framework
/includes/options/Options Framework
/includes/kirki/Kirki Library
/includes/hybrid2/Hybrid Core 2
/includes/hybrid3/Hybrid Core 3
/includes/hybrid-hook/Hybrid Hook
/includes/foundation5/Foundation 5
/includes/foundation6/Foundation 6
← Previous: Conditional Value FiltersBack to Documentation Index

Leave a Reply

Your email address will not be published. Required fields are marked *