Developers
This chapter documents the stable, public surface of Fenómenus: the content model, the meta keys that hold prices and text, the shortcodes and merge tags used by templates, the filters available to extend behavior, and the conventions the tools rely on.
It is written for developers integrating with a Fenómenus site — building templates, extending archives, or reading menu data from another system.
In this chapter
| Topic | Article |
|---|---|
| Post types, taxonomies and how they relate | Content model |
| Where prices live | Price data contract |
| Where allergen data lives | Allergen data contract |
| The shortcodes available on the front end | Front-end shortcodes |
| Archive and feed templates, and merge tags | Template integration |
| The category navigation and its behavior | Category navigation reference |
| Extending carousel-based archives | Carousel extension |
| How bulk import matches and writes | Excel import contract |
| What the QR generator produces | QR generation contract |
| What the PDF generator consumes and produces | PDF generation contract |
| Multilingual behavior | Language integration |
| POM Translate specifics | POM Translate compatibility |
| Cache behavior during bulk work | Bulk operation cache strategy |
| Performance characteristics | Performance |
| Capabilities and request safety | Security and capabilities |
What is stable
The identifiers below are part of the public contract and are safe to depend on:
- the ten public menu post type slugs;
- the
<post_type>_categorytaxonomy convention; - the price meta keys;
- the
allergenandfeaturedtaxonomy slugs; - the documented shortcodes;
- the documented filters.
What is not stable
Anything not documented here: internal class names, admin screen markup, AJAX action names, generated stylesheet paths, and the structure of generated template files. Build against the documented surface.
The design assumptions worth knowing
The theme owns registration. Fenómenus configures the menu content types, taxonomies and fields; the POM theme registers them. Code that runs before registration will not see them.
Categories are the navigation. Each menu type has one category taxonomy, ordered by a stored term position, and that order drives archives, navigation, PDFs and admin lists alike.
Facts are shared, text is translated. Prices, allergens, images, order and status are shared across an item's translations; only text is per language. Integrations should read facts from any translation and expect them to agree.