Introducing Paver · vanrossum.dev    

       vanrossum.dev 

 Article

Introducing Paver
=================

 ![](https://vanrossum.dev/images/jeffrey-portrait.webp) By Jeffrey van Rossum

  vanrossum.dev  

  [      vanrossum.dev ](https://vanrossum.dev)                      

  [ ← Writing ](https://vanrossum.dev/posts)   [ ← Writing ](https://vanrossum.dev/posts) [ The Why Behind Paver ](#the-why-behind-paver) [ What’s Paver All About? ](#whats-paver-all-about) [ Beyond WordPress: Laravel, and More ](#beyond-wordpress-laravel-and-more) [ Getting Started with Paver ](#getting-started-with-paver) [ Built With ](#built-with) [ Videos ](#videos) 

Last weekend, I launched Paver. A drag-and-drop block editor built specifically for PHP developers. Currently it's in the pre-release stage.

The Why Behind Paver
--------------------

Imagine a designer hands you a design that needs to be turned into a WordPress theme. Well, since the introduction of Gutenberg (or the Block Editor) users expect a WYSIWYG experience while making and editing their pages. And that is certainly something you can achieve with Gutenberg, but what if the design is a little more complicated?

*Quick side note: if you're not into WordPress but you're still interested in a PHP based block editor, skip to [this part](#whats-paver-all-about).*

Gutenberg has a ton of options and is actively developed still, but when you’re looking to build more advanced designs, things can get tricky. Once you discover things can't be done within the editor itself, you would probably need to create custom blocks. Well creating custom Gutenberg blocks is a whole new craft in itself. You basically leave the PHP world and enter the JavaScript one.

Say you need to create a carousel block based on your custom design. Consider that this block needs to be: editable in the editor, look WYSIWYG-ish in the editor and needs to look good on the front-end of your site. Three states to develop. This can become quite time consuming.

I have no shame in admitting I like PHP. No problem to dip my toes a bit into the JavaScript world, but I'd much rather do that while using some basic vanilla JavaScript or a lightweight framework like Alpine.js. In addition, I really like Tailwind CSS - but it can be challenging to not mess up the WordPress admin layout to some degree when you use it within Gutenberg.

But don’t get me wrong, this isn’t a knock on Gutenberg. For my particular use case, I just felt that an alternative like Paver could fill a gap.

What’s Paver All About?
-----------------------

Paver is a drag-and-drop block editor that lets you create your own blocks, with good 'ol PHP, and customize their options. As a WordPress theme developer, with that ability, I have full control over the options I present to the user. Which results in a more controlled, and less error-prone experience.

You can make those options with simple HTML and Alpine.js. Here’s a quick example of what a block might look like:

```php
class Example extends Block
{
    public string $name = 'Example';

    public static string $reference = 'your_prefix.example';

    public array $data = [
        'title' => 'A default title'
    ];

    function options()
    {
        return  
> , Jeffrey van Rossum (@jeffreyrossum) [August 13, 2024](https://twitter.com/jeffreyrossum/status/1823472716550438971?ref_src=twsrc%5Etfw)

  ![](https://vanrossum.dev/images/jeffrey-portrait.webp) Jeffrey van Rossum [@jeffreyrossum](https://x.com/jeffreyrossum) 

 share [𝕏](https://twitter.com/intent/tweet?url=https%3A%2F%2Fvanrossum.dev%2Fposts%2Fintroducing-paver&text=Introducing+Paver) [WhatsApp](https://wa.me/?text=Introducing+Paver+https%3A%2F%2Fvanrossum.dev%2Fposts%2Fintroducing-paver) [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fvanrossum.dev%2Fposts%2Fintroducing-paver) 

   © 2026 Jeffrey van Rossum 

  vanrossum.dev vanrossum.dev
