WordPress has a lot more themes than Drupal. WordPal takes a WordPress block theme and turns it into a Drupal site that looks the same, where editors can change every page in Canvas or Display Builder.

Try it in 5 minutes

The Drupacked Demo is Drupal CMS with WordPal, packed as one binary by Drupack. One download, a couple of commands, and you can play with a converted theme without installing PHP, Node.js or a database. It's a throwaway site for testing, don't build your project on it.

curl -fsSL https://drupack.tresbien.tech/demo.sh | sh
./drupacked-demo
./drupacked-demo drush wpc twentytwentyfour --target=canvas

The first start opens your dashboard. When the conversion ends the site serves the new theme. To try Display Builder instead:

./drupacked-demo drush pm:install -y wordpal_display_builder
./drupacked-demo drush wpc twentytwentyfour --target=display_builder

Any theme slug from wordpress.org works in place of twentytwentyfour. On Windows, install from PowerShell with irm https://drupack.tresbien.tech/demo.ps1 | iex and run .\drupacked-demo.exe.

What you get

Point WordPal at a theme, and a few minutes later you have:

  • a normal Drupal theme with the theme's styles, fonts and style variations
  • the home page as a Canvas page, and the post and page templates bound to your fields
  • archives, tags and search as Views
  • every pattern of the theme in the Canvas library
  • the menus, plus some demo content so it doesn't look empty

WordPress only runs during the conversion, on your machine. Production gets the Drupal theme and the WordPal runtime module, the converter stays off.

Which themes work

Close to 2,000 block themes convert to a working Drupal site. Twenty Twenty-Four and Twenty Twenty-Five come out identical, other themes have small differences, sometimes bigger ones. Check yours in the gallery before trying, it converts every block theme each night.

Some of the most popular themes, like Astra or Kadence, are not block themes and can't be converted by WordPal. Blocks that come from a plugin become frozen blocks: same HTML, same CSS, editors can move them around but can't edit them, since they depend on the plugin's WordPress code to work. They have a dashed outline so you can't miss them. The block support page lists every WordPress core block and what it loses.

Use it on a project

From a Drupal CMS project on Drupal 11.4 and PHP 8.4, with Node.js on the machine that converts:

composer require drupal/drupal_cms_content_type_base drupal/drupal_cms_search drupal/wordpal:@alpha
ln -s ../web/modules/contrib/wordpal/recipes/wordpal recipes/wordpal
drush en wordpal_canvas
drush wordpal:convert twentytwentyfive

Do it on a new site and open the front page. The README covers the rest: other Drupal sites, your own content types, Display Builder and deploying.

A conversion runs the theme's PHP and its plugins' PHP, and the generated theme ships their scripts to production. Only convert a theme you would run as code on your site.

When the WordPress theme updates

It's still early days, but you can convert the theme again: what your editors didn't touch gets updated, what they changed stays as it is. A WordPress theme on the Drupal side is code, config and content, so updates are a bit tricky. I'd love feedback on what makes sense for you.

Status

Alpha. Today I'd use it for prototypes and demos: show a client their site, in the look they picked, in an afternoon. For production use I'd want more work on:

  1. Plugin blocks that editors can actually edit (fewer frozen blocks).
  2. Converting onto a site that already has content.
  3. A security review, since the conversion runs third-party theme code.
  4. A few Canvas and Display Builder fixes landing upstream.

Help wanted

The gallery tells me what converts, but it can't tell me what breaks on a real project. If you try WordPal with a theme you would actually ship, open an issue with what went wrong.

I'm also looking for a co-maintainer or two, so this doesn't rest on one person, and for sponsored time. Every day there are theme updates on the WordPress side, and making sure it all works on Canvas and Display Builder takes some effort too. If your company is interested, let me know in the issue queue or in #drupal Slack.

About the code

I wrote the first conversion by hand. WordPress has 90+ core blocks, so for the rest I had help from LLMs.

Supporting organizations: 

Project information

Releases