Developer Documentation

Upgrading to v7

If you are migrating from WordPress to Altis, check out the migrating guide here first.

To upgrade to Altis v7, edit your composer.json and change the version constraint for altis/altis and any local environment modules to ^7.0.0.

In addition you will need to change the config.platform.php property to 7.4.13 (if present).

{
	"require": {
		"altis/altis": "^7.0.0"
	},
	"require-dev": {
		"altis/local-chassis": "^7.0.0",
		"altis/local-server": "^7.0.0"
	},
	"config": {
		"platform": {
			"php": "7.4.13"
		}
	}
}

From v5 or Earlier

Note: If you are using Composer v2 you can ignore this step.

Next, remove the vendor directory by running rm -rf vendor or on Windows rmdir vendor. You could also delete the directory using your code editor, Finder or Explorer.

Next run composer update to complete the upgrade. You should commit the updated composer.json and composer.lock files.

When deploying to a cloud environment you should open the advanced options panel and click "Clear Build Cache" before proceeding with the deployment.

Database Updates

You will need to update your database tables using the CLI:

  • On Altis Dashboard find the stack you have deployed to and run core update-db --network (wp is automatically prepended) in the WP CLI tab
  • For Local Chassis run composer chassis exec -- wp core update-db --network
  • For Local Server run composer local-server cli -- core update-db --network

Elasticsearch Updates

Altis v7 requires changes to the Elasticsearch mappings so you will need to reindex your content after the upgrade.

  • On Altis Dashboard find the stack you have deployed to and run elasticpress index --setup --network-wide --url=<host name> (wp is automatically prepended) in the WP CLI tab
  • For Local Chassis run composer chassis exec -- wp elasticpress index --setup --network-wide --url=<host name>
  • For Local Server run composer local-server cli -- elasticpress index --setup --network-wide

Breaking Changes

PHP 7.4

Altis v7 requires PHP 7.4 support. Both Local Server and Local Chassis now default to using PHP 7.4. You may need to update your application to run on PHP 7.4.

The full list of breaking changes in PHP 7.4 can be found here. We recommend following the PHP update guide to get your projects ready.

ElasticPress 3.5.6

The ElasticPress dependency has been updated from 3.4.3 to 3.5.6. This update requires reindexing your content. A full list of ElasticPress changes for each release can be found here.

Limit Login Attempts Removed

The Limit Login Attempts feature has been removed in favour of rules to handle this at the infrastructure level. This avoids causing database writes during brute force attacks and subsequent performance problems.

Any related configuration should be removed.

S3 Uploads 3.0.0

The latest version of S3 Uploads has been refactored to use namespaces instead of prefixed class names and functions.

If you have any code referencing the class S3_Uploads this will need to be updated to S3_Uploads\Plugin. Additionally any other references to classes starting with S3_Uploads should be updated to use S3_Uploads as the namespace, for example S3_Uploads_Local_Stream_Wrapper becomes S3_Uploads\Local_Stream_Wrapper. Any functions prefixed with s3_uploads_* have also been moved into the S3_Uploads namespace, for example s3_uploads_enabled() is now S3_Uploads\enabled().

All constants remain unchanged.

Altis Experiments

The experiments feature of native analytics has been merged into the main native analytics codebase. This means any references in your code to the namespace Altis\Experiments should be updated to Altis\Analytics\Experiments.

Additionally the Altis\Analytics\Experiments\register_goal() function accepts a different set of arguments than it did in Altis v6, see the Goal Tracking documentation for full details.

Headline Features

WordPress 5.7 "Esperanza"

The latest CMS module includes WordPress 5.7. Some of the highlights of this release are:

  • Improved Reusable Block editing in the block editor. Reusable Blocks can now be fully edited inline in a post and saved separately to the post they are embedded in.
  • A new Robots API provides control over the robots meta tag and search engine previews
  • Lazy loading for iframes
  • Ability to send password reset links to users

Be sure to read the release post and in addition the full WordPress 5.7 Field Guide can be found here.

Experience Block Insights

Continuing from previous improvements to tracking the performance of Experience Blocks in v6, Altis v7 adds a dedicated dashboard for showing all Experience Blocks across the site with options for sorting by views and conversion rate.

When editing blocks warnings are shown to authors if their selected conversion goals can not be tracked, and if they are missing fallback content.

In addition there is a new, more detailed overview of Experience Block data that more clearly shows audience coverage, views and conversion rate changes over time and also detailed breakdowns of how each variant is performing compared to the fallback.

Several new REST API endpoints have been added for fetching blocks and block anlaytics data, along with a background post type that can be used for storing persistent data.

Authorship

Altis now supports adding multiple authors to posts as well as managing guest authors, either as full or partial users.

Full documentation for the Authorship feature including how to enable it can be found here.

Better Reusable Blocks

In addition to the WordPress core improvements to Reusable Blocks Altis v7 bundles several improvements to the Reusable Blocks interface. These include:

  • Ability to search by block title within the editor
  • Usage count
  • Links to posts using a block
  • Reusable Block categories

Other Features and APIs

Local Server

  • Added a mysql: link to the output from composer server db info for software that supports the format. This allows using command or control click in the terminal to open the link.
  • A new composer server db exec command allows executing SQL from the command line without logging into the container or using some other tool
  • Experimental support for Mutagen.io volume sharing. This can improve speed and file synchronisation issues on MacOS and Windows in some cases

Dev Tools

  • A Webpack Asset Loader library has been introduced to make it easy to detect and load assets generated by webpack, including support for loading assets from Webpack Dev Server.

Other Changes

Altis v7 includes many other small changes, consult the changelog for full details of all the changes shipped in this release.