studiometa / foehn-starter
Starter theme for Foehn — a modern WordPress framework powered by Tempest.
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 0
Forks: 0
Open Issues: 0
Type:project
pkg:composer/studiometa/foehn-starter
Requires
- php: ^8.4
- composer/installers: ^2.0
- johnpbloch/wordpress: ^6.7
- studiometa/foehn: ^0.4
- studiometa/foehn-installer: ^0.4
Requires (Dev)
- stoutlogic/acf-builder: ^1.12
README
A complete WordPress starter theme demonstrating all Føhn features.
Note This package is part of the Føhn Framework monorepo. Please report issues and submit pull requests in the main repository.
Quick Start with DDEV
composer create-project studiometa/foehn-starter my-project
cd my-project
ddev start
That's it. DDEV will:
- Start PHP 8.5 + MariaDB + nginx
- Copy
.env.exampleto.env(with DDEV defaults) - Run
composer install(generatesweb/, symlinks, wp-config.php) - Install WordPress with admin/admin credentials
- Activate the starter theme
Open the site: ddev launch
Admin panel: ddev launch /wp/wp-admin (admin / admin)
Quick Start without DDEV
composer create-project studiometa/foehn-starter my-project cd my-project cp .env.example .env # Edit .env with your database credentials composer install
Then point your web server's document root to the web/ directory.
Project Structure
my-project/
├── theme/ # WordPress theme (versioned)
│ ├── app/
│ │ ├── Blocks/ # ACF blocks
│ │ ├── ContextProviders/ # Context providers
│ │ ├── Controllers/ # Template controllers
│ │ ├── Data/ # DTOs for block context
│ │ ├── Hooks/ # WordPress hooks (actions & filters)
│ │ ├── ImageSizes/ # Custom image sizes
│ │ ├── Menus/ # Navigation menus
│ │ ├── Models/ # Custom post types (Timber models)
│ │ ├── Taxonomies/ # Custom taxonomies
│ │ └── foehn.config.php # Framework configuration
│ ├── assets/
│ │ ├── js/ # JavaScript (js-toolkit)
│ │ │ ├── app.js # Entry point
│ │ │ └── components/ # Custom components
│ │ └── css/ # CSS (Tailwind v4)
│ │ ├── app.css # Entry point
│ │ ├── base/ # Base styles
│ │ └── components/ # Component styles
│ ├── templates/ # Twig templates
│ │ ├── layouts/ # Base layouts
│ │ ├── pages/ # Page templates
│ │ └── components/ # Reusable components
│ ├── functions.php # Single boot line
│ └── style.css # Theme header
│
├── .ddev/ # DDEV configuration
├── vite.config.js # Vite build config
├── web/ # Generated document root (gitignored)
├── .env # Environment variables (not needed with DDEV)
├── composer.json # PHP dependencies
└── package.json # JS dependencies
What's included
Custom Post Types
- Product — with price, sale price, and product categories
- Testimonial — with author info and ratings
Custom Taxonomies
- ProductCategory — hierarchical, with custom rewrite
- ProductTag — flat taxonomy for products
Template Controllers
- SingleController — handles all single post/page views
- ArchiveController — handles archives, categories, tags
- SearchController — search results page
- Error404Controller — 404 error page
Hooks
- ThemeHooks — theme setup, image sizes, menus
Context Providers
- GlobalContextProvider — site info, menus, available on all templates
Built-in Foehn Hooks (via foehn.config.php)
CleanHeadTags— removes unnecessary<head>tagsDisableEmoji— removes emoji scripts/stylesDisableOembed— removes oEmbed discoveryDisableVersionDisclosure— hides WordPress versionDisableXmlRpc— disables XML-RPC + pingbackGenericLoginErrors— hides username enumeration on loginYouTubeNoCookieHooks— converts YouTube embeds to no-cookie variant
Development
Front-end
npm install # Install JS dependencies npm run dev # Start Vite dev server (HMR) npm run build # Build for production npm run lint # Lint JS, CSS and Twig npm run fix # Auto-fix linting issues
DDEV Commands
ddev start # Start the environment ddev stop # Stop the environment ddev launch # Open the site in browser ddev ssh # SSH into the container ddev composer install # Run composer inside the container ddev wp <command> # Run WP-CLI commands ddev describe # Show URLs and connection info
Without DDEV
# Requirements: PHP 8.5+, Composer 2.x, MySQL/MariaDB # Development server (via wp-cli) wp server --docroot=web # Or configure nginx/apache to point to web/
License
MIT