Provides CMS (Content Management System) like functionality through admin dashboard. This is essentially a core software layer that provides you with the ability to easily create and manage a website with custom content and settings stored in a MySQL database. It was originally designed to make the creation of blogging sites simpler however it has evolved and is now used for many types of sites and powers almost a quarter of the web. You can extend it through the elements below.
These are self contained pieces of software for a specific function that rely on the WordPress functionality and database to do their job. They are typically used to to extend WordPress to make it do things that would not otherwise be possible, although they are sometimes used to alter WordPress functionality itself. They can impact any stage of the hierarchy however they rely on the existence of WordPress to run.
WordPress Themes (Including Frameworks)
Themes are responsible for the HTML output on the front end of the website via a collection of page layouts with associated styling code and as such are the main visual components of WordPress. They should not significantly alter the functionality of WordPress itself, although technically they can include the same type of code used in plugins so many themes go beyond what they should in theory do. This is often bad practise as you may need to change your theme for a different layout at a later stage requiring a different theme, and if your theme is responsible for core functionality your site may break once you use a different theme.
The exception to the design oriented focus is with Frameworks which place less of a focus on the visual element and more on providing the HTML output in the right way for interfacing with WordPress and structuring your code in the right way for search engines to pick up (SEO) whilst also providing a modular structure which allows for easy editing of all core elements without negatively affecting the rest of the theme.
WordPress Child Themes
These are primarily used on top of framework style themes although it is technically possible to use a child theme with any WordPress theme. This allows you to create custom page layouts and variations of a theme without modifying the parent theme, so it is possible to keep the parent theme updated to the latest version without losing your customisations. This means that any areas you have created custom code for will use the child theme, however if nothing custom has been created the parent theme or framework will be used.
WordPress Page Layouts
At it’s most basic; WordPress only needs one page layout to function and that is the one which controls a simple blog layout. However any theme, framework, child theme, or plugin can extend this by adding any number of custom page layouts which will appear in specific circumstances, such as viewing a page rather than a post, the home page or even advanced functionality driven by plugins such as job boards and landing pages. If no page layout exists for a certain use case then it will default to a blog style view as the basis.
These are present within most modern themes and although they are traditionally along the side of a page as the name would suggest, they can be placed anywhere within a theme or child theme via custom code, which allows you to add widgets to the area in a drag and drop manner.
There are a certain number of core Widgets which are available within WordPress by default and more can be added by WordPress plugins, themes, frameworks and child themes. These are self contained display elements often powered by code on the backend that are displayed on the front end.