Extending
Use a child theme for CSS
Academia updates through the Plugins-style update screen, so edits to its own files are overwritten. For anything more than a colour tweak — which belongs in Appearance → Editor → Styles — use a child theme:
academia-child/
├── style.css
└── theme.json (optional: only the values you change)
/*
Theme Name: Academia Child
Template: academia
Version: 1.0.0
*/
A child theme.json is merged over the parent's, so you only need the keys you
are changing.
Filters
Courses
| Filter | Does |
|---|---|
academia_course_sources |
Register a course source of your own |
academia_course_source |
Force which source is used |
academia_course |
Change a normalised course before it renders |
academia_course_filter_renderer |
Swap the whole course browser renderer |
academia_currency_symbol |
The symbol used when WooCommerce is not active |
The renderer filter is how Academia Library adds its no-reload browser. It is
also the right place to put your own, and it is deliberately a filter rather
than a function you redefine — the theme owns one academia_course_filter() and
swapping behaviour cannot collide with it.
Updates and privacy
| Filter | Does |
|---|---|
academia_check_for_updates |
Return false to switch off update checks entirely |
academia_update_payload |
Change what an update check sends |
academia_library_update_payload |
The same, for the plugin |
See Updates & privacy for exactly what is sent.
Setup
| Filter | Does |
|---|---|
academia_auto_setup_front_page |
Return false to stop the Home/Blog pages being created on activation |
academia_starter_sites |
Add or change starter site definitions |
academia_form_providers |
Add a contact-form plugin to the ten recognised |
academia_detected_form |
Override which form is rendered |
Forms
A theme must not process form submissions, and Academia does not. It detects whichever form plugin is active, renders its first form, and wraps the output so the fields inherit the theme's styling without the theme knowing that plugin's class names.
Detection prefers a registered post type over a class name — plugins move their namespaces between versions, the post type does not.
What Academia deliberately does not do
- Register a post type. Courses belong to the plugin, so changing theme never takes a catalogue with it.
- Process a form. That is a plugin's job, and a theme doing it means your submissions stop the day you switch.
- Ship a page builder or an options panel. It is a block theme; the Site Editor is the interface.