Warning
This repository is no longer maintained by our internal teams.
The template is provided as is and will not receive updates, bug fixes, or new features.
You are welcome to contribute on it or fork the repository and modify it for your own use.
To deploy this template on Upsun, you can use the command upsun project:convert
on this codebase to convert the existing .platform.app.yaml configuration file to the Upsun Flex format.
This template builds WordPress on Platform.sh using the johnbloch/wordpress "Composer Fork" of WordPress.  Plugins and themes should be managed with Composer exclusively.  A custom configuration file is provided that runs on Platform.sh to automatically configure the database, so the installer will not ask you for database credentials.  For local-only configuration you can use a wp-config-local.php file that gets excluded from Git.
WordPress is a blogging and lightweight CMS written in PHP.
- PHP 7.4
 - MariaDB 10.4
 - Automatic TLS certificates
 - Composer-based build
 
- 
Run through the WordPress installer as normal. You will not be asked for database credentials as those are already provided.
 - 
This example looks for an optional
wp-config-local.phpin the project root that you can use to develop locally. This file is ignored in Git. 
Example wp-config-local.php:
<?php
define('WP_HOME', "http://localhost");
define('WP_SITEURL',"http://localhost");
define('DB_NAME', "my_wordpress");
define('DB_USER', "user");
define('DB_PASSWORD', "a strong password");
define('DB_HOST', "127.0.0.1");
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
// These will be set automatically on Platform.sh to a different value, but that won't cause issues.
define('AUTH_KEY', 'SECURE_AUTH_KEY');
define('LOGGED_IN_KEY', 'LOGGED_IN_SALT');
define('NONCE_KEY', 'NONCE_SALT');
define('AUTH_SALT', 'SECURE_AUTH_SALT');The following changes have been made relative to WordPress as it is downloaded from WordPress.org. If using this project as a reference for your own existing project, replicate the changes below to your project.
- It uses the 
johnbolch/wordpress"Composer Fork" of WordPress, which allow the site to be managed entirely with Composer. - The 
.platform.app.yaml,.platform/services.yaml, and.platform/routes.yamlfiles have been added. These provide Platform.sh-specific configuration and are present in all projects on Platform.sh. You may customize them as you see fit. - An additional Composer library, 
platformsh/config-reader, has been added. It provides convenience wrappers for accessing the Platform.sh environment variables. - The 
wp-config.phpfile has been modified to use the Config Reader to configure WordPress based on Platform.sh environment variables if present. If not, your ownwp-config-local.phpfile will be loaded to configure the site for local development. - A base Landofile provides configuration to use this template locally using Lando.
 - Any themes and plugins present in the most recent version of WordPress are detected and have been added as dependencies in 
composer.jsonso they are easier to update. - The upstream 
composer.jsonfile has been modified to include the scriptsubdirComposer. It moveswp-config.phpinto the default install directory and docrootwordpressaftercomposer installis run. It also removes a nested directorywordpress/wp-content/wp-content. Since WordPress is not by default intended to be installed via Composer, anything Composer-related wrapping around it does not always perfectly interact, and adding new themes and plugins via Composer is a case of this. If this command was not included, the initial deployment would work just fine, and the default themes and plugins would end up where you would expect inwordpress/wp-content/[themes|plugins]. However, once youcomposer requireadditional packages from WPackagist, those original default packages end up in a nested subdirectorywordpress/wp-content/wp-contentand are inaccessible to WordPress. This is another reason that those default themes and plugins are added tocomposer.json, allowing us to remove this artifact when WordPress builds with Composer. You can view the original issue here. 
This template has been configured for use with Lando. Lando is Platform.sh's recommended local development tool. It is capable of reading your Platform.sh configuration files and standing up an environment that is very similar to your Platform.sh project. Additionally, Lando can easily pull down databases and file mounts from your Platform.sh project.
To get started using Lando with your Platform.sh project check out the Quick Start or the official Lando Platform.sh documentation.