PHPackages                             studiometa/foehn-installer - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [DevOps &amp; Deployment](/categories/devops)
4. /
5. studiometa/foehn-installer

ActiveComposer-plugin[DevOps &amp; Deployment](/categories/devops)

studiometa/foehn-installer
==========================

Composer plugin that generates the WordPress web root, symlinks, and wp-config.php for Foehn projects.

0.4.1(3mo ago)141MITPHPPHP ^8.4

Since Feb 10Pushed 2mo agoCompare

[ Source](https://github.com/studiometa/foehn-installer)[ Packagist](https://packagist.org/packages/studiometa/foehn-installer)[ RSS](/packages/studiometa-foehn-installer/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (2)Versions (3)Used By (1)

Foehn Installer
===============

[](#foehn-installer)

Composer plugin that generates the WordPress web root for [Føhn](https://github.com/studiometa/foehn-framework) projects.

> **Note**This package is part of the [Føhn Framework](https://github.com/studiometa/foehn-framework) monorepo. Please report issues and submit pull requests in the [main repository](https://github.com/studiometa/foehn-framework).

What it does
------------

[](#what-it-does)

On `composer install` and `composer update`, this plugin automatically:

1. Creates the `web/` directory structure (document root)
2. Generates `web/wp-config.php` (loads config from `config/` directory)
3. Generates `web/index.php` (WordPress front controller)
4. Symlinks `theme/` → `web/wp-content/themes/{name}`
5. Symlinks `mu-plugins/` → `web/wp-content/mu-plugins/_custom`
6. Generates the mu-plugin loader

Installation
------------

[](#installation)

```
composer require studiometa/foehn-installer
```

Configuration
-------------

[](#configuration)

Configure via `extra.foehn` in your project's `composer.json`:

```
{
  "extra": {
    "foehn": {
      "web-dir": "web",
      "wp-dir": "wp",
      "theme-dir": "theme",
      "theme-name": "my-theme",
      "mu-plugins-dir": "mu-plugins",
      "config-dir": "config"
    }
  }
}
```

All options are optional and have sensible defaults.

OptionDefaultDescription`web-dir``web`Web root directory (document root)`wp-dir``wp`WordPress core directory within web root`theme-dir``theme`Theme source directory to symlink`theme-name``theme`Theme directory name in `wp-content/themes/``mu-plugins-dir``mu-plugins`Custom mu-plugins directory to symlink`config-dir``config`Configuration files directoryGenerated structure
-------------------

[](#generated-structure)

```
web/                            ← Document root (nginx/apache)
├── index.php                   ← Generated front controller
├── wp-config.php               ← Generated configuration
├── wp/                         ← WordPress core (via composer)
└── wp-content/
    ├── themes/
    │   └── my-theme → ../../theme/
    ├── plugins/                ← Composer-managed plugins
    ├── mu-plugins/
    │   ├── 00-loader.php       ← Generated loader
    │   └── _custom → ../../mu-plugins/
    └── uploads/

```

License
-------

[](#license)

MIT

###  Health Score

36

—

LowBetter than 82% of packages

Maintenance83

Actively maintained with recent releases

Popularity5

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity42

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 87.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

91d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/7e88435dae9fed57464c2668f35d4c7dd7f874e55e9727972369538d639d6373?d=identicon)[titouanmathis](/maintainers/titouanmathis)

---

Top Contributors

[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (7 commits)")[![titouanmathis](https://avatars.githubusercontent.com/u/250145?v=4)](https://github.com/titouanmathis "titouanmathis (1 commits)")

---

Tags

wordpressinstallercomposer-pluginfoehn

### Embed Badge

![Health badge](/badges/studiometa-foehn-installer/health.svg)

```
[![Health](https://phpackages.com/badges/studiometa-foehn-installer/health.svg)](https://phpackages.com/packages/studiometa-foehn-installer)
```

###  Alternatives

[composer/installers

A multi-framework Composer library installer

1.4k136.0M6.0k](/packages/composer-installers)[johnpbloch/wordpress-core-installer

A custom installer to handle deploying WordPress with composer

22110.8M47](/packages/johnpbloch-wordpress-core-installer)[wecodemore/wpstarter

Composer plugin to easily build WordPress websites entirely managed via Composer.

253195.2k6](/packages/wecodemore-wpstarter)[typisttech/imposter-plugin

Composer plugin that wraps all composer vendor packages inside your own namespace. Intended for WordPress plugins.

158251.0k2](/packages/typisttech-imposter-plugin)[drupal-composer/preserve-paths

Composer plugin for preserving custom paths and supporting nested packages

271.1M5](/packages/drupal-composer-preserve-paths)[szepeviktor/composer-envato

Composer plugin for Envato

3715.2k1](/packages/szepeviktor-composer-envato)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
