Skip to content
Sage
v10.8.2
  • Sage page

Deployment

PHP versions must match

Make sure the PHP version of your development environment matches the PHP version of your production environment, or you may hit a fatal error due to your Composer dependencies requiring a different PHP version.

# Deploying a Sage-based WordPress theme

  1. Build theme assets (yarn build)
  2. Install Composer dependencies (composer install --no-dev --optimize-autoloader)
  3. Upload all files and folders in your theme except the node_modules directory to your host

# Optimization

Similar to deploying a Laravel app, Acorn supports an optimize command that will cache your configuration and views. This command should be ran as part of your deployment process:

wp acorn optimize

# Server configuration

Using Trellis or Radicle?

If you are using Trellis to provision your production environment, or you are using Radicle, you can skip this section.

# Securing Blade templates

Due to the nature of WordPress, any file residing in the theme folder is publicly accessible. By default, webservers will return any requests made to a *.blade.php template as plain-text.

This can create an opening for potential security risks as well as unwanted snooping.

To prevent this from happening, we will need to add configuration to the web server to deny access to the file extension.

# Nginx

If you are using Nginx, add the following to your site configuration before the final location directive:

location ~* \.(blade\.php)$ {
    deny all;
}

# Apache

If you are using Apache, add the following to your virtual host configuration or the .htaccess file at the root of your web application:

<FilesMatch ".+\.(blade\.php)$">
    # Apache 2.4
    <IfModule mod_authz_core.c>
        Require all denied
    </IfModule>

    # Apache 2.2
    <IfModule !mod_authz_core.c>
        Order deny,allow
        Deny from all
    </IfModule>
</FilesMatch>

# Deploying Sage with Trellis

If you use Trellis, you can build your assets locally (or on a CI server), then copy them to the remote server during deployment. See the build-before.yml example hook in Trellis.

# Deploying Sage on Kinsta

Kinsta supports Bedrock and Trellis, so deploying Sage with Trellis on Kinsta is possible by following a few extra steps.

# Deploying Sage on WP Engine

See the instructions from wpengine/example-sage-theme.

Contributors

Last updated

Support Roots

Help us continue to build and maintain our open source projects. We’re a small team of independent developers and every little bit helps.

Sponsor Roots on GitHub