I advise using a "headless" Content Management System (CMS). This means the CMS is decoupled (separated) from the website front-end system.

Rephrased, it means the CMS manages content but it does not render the content. Instead, that becomes the job of the website's front-end system.

By separating concerns and allocating just a single job to the CMS, we allow the CMS to focus exclusively on creating flexible data schemas to house digital content without having to worry about how the data is rendered.

This separation of concerns opens up opportunities for "single source of truth" data which can be supplied concurrently to different apps at the same time. For example, a website and a smartphone app.

With a "headless" model, the CMS simply provides an API (Application Programming Interface), which the front-end system queries and places within templates. This allows me, as developer, to choose the best tools for the front-end system without being dragged down by constraints of a CMS's frontend system, for example the legacy model of Wordpress. These old front-end models, which can't progress with breaking the CMS system, can't compete with the ongoing evolution of web development user interface tools like Vue.js and React.js.

As an example of a Headless CMS, I've been using Dato CMS for over a year with very pleasing results, having previously tried half a dozen paid and open-source options over the past 5 years.