Custom Layouts – Post + Product grids made easy


Build a list or grid layout of any post type (products, pages, posts + more).

The visual editing experience makes creating unqiue designs a breeze.

  • Design post templates (cards) using our drag and drop builder
  • Built for both Gutenberg users and non Gutenberg users (blocks + shortcodes available)
  • Query builder – select from multiple post types or restrict by tags, categories, taxonomies, authors and more
  • Works with any theme
  • No coding required
  • Responsive options


What can you make with this plugin?

  • Popular posts widget
  • Recent posts widget
  • A shop layout for listing products (*when combined WooCommerce, Easy Digital Downloads and other product plugins)
  • A post grid
  • A portfolio grid
  • Masonry layouts
  • Custom post type layouts
    And much more…

Layout Editor

Build single column or grid based layouts using the visual editor.

  • Supports Masonry out of the box
  • Tons of design options to build the layout you want
  • Choose to add numbered Pagination ( ‘Load more’ and ‘Infinite scroll’ options coming soon )
  • Powerful query builder
  • Responsive columns (choose how many columns to show for each device size – and set your own breakpoints)

Query Builder

Options include:

  • Multiple post type selection
  • Tag, category and custom taxonomy restriction
  • Single author or multiple author restriction
  • Ordering by – post title, published date (for recent posts), modified date, post ID, comment count (for popular posts), author
  • Posts per page
  • Offset
  • Ignore sticky posts

Template Editor

  • Design individual templates (cards) using our drag and drop editor – creativity is your only limit
  • Link them with your layouts to build beautiful designs
  • Hundreds of design options
  • Unique blocks for building templates + template editor
    • granular control over the blocks you add to your design – choose from a growing list
    • to re-arrange blocks, just drag and drop
    • each block has it’s own sidebar full of options such as spacing, colors (including gradients + alpha transparencies), font settings, borders, and more.
  • Currently available blocks: Post Title, Post Type, Post Excerpt, Post Author, Published + Modified Date, Custom Field, Taxonomies, Link, Basic Text (with shortcode support).
    Find out more about our template blocks.

Gutenberg integration

  • Custom blocks for building layouts
  • Seamlessly integrates with our Template Editor
  • UI built using 90% Gutenberg components 👍
  • Experimental FSE Query block support (drop our Post Template block into the Query block…)
  • Works with the version of Gutenberg shipped in WP core, and the Gutenberg plugin (using the latest stable build)

Built for speed

  • At its base – loads only 1 css file and 1 javascript file on the frontend – total bundle size approx 15kb.
  • CSS file dynamically created, saving resources and requests per page load (+ avoiding inline CSS)
  • Caches posts + queries for optimum performance
  • Not jQuery dependant

Includes 7 sample templates

We’ve included a pack of templates ready for you to customise – check the installation tab for how to import these to your site.

Multilingual ready

Custom Layouts should support most multilingual plugins – we use a custom post type to store content that is not stored in the block editor.
* We’ve also added specific support for WPML’s Advanced Translation Editor.

Known Issues

  • Admin Template Editor only works on desktop computers (tablets + mobiles not supported)
  • Admin Template Editor does not work on IE, all other major browsers supported – ** the frontend of this plugin supports IE 11+, no sweat


  • Improve performance and load speed by providing an option to use CSS Grid for layouts + masonry
  • Support more CSS unit types in more places
  • Blocks for WooCommerce
  • Blocks for ACF
  • More template blocks (possibly use the block library)
  • Additional hover options
  • Additional font options – either Google fonts or the Gutenberg api which looks like it’s coming soon
  • Social/sharing blocks

Reviews help us improve (and climb the plugin rankings)


  • Using the layout block
  • The Template Editor - full customization over each item
  • Frontend result
  • Short demo animation
  • Responsive controls


This plugin provides 2 blocks.

  • Posts Layout Display posts as a list or grid.
  • Post Template Display any post using a Custom Template.


Uploading in WordPress Dashboard

  1. Navigate to the ‘Add New’ in the plugins dashboard
  2. Navigate to the ‘Upload’ area
  3. Select from your computer
  4. Click ‘Install Now’
  5. Activate the plugin in the Plugin dashboard

Using FTP

  1. Download
  2. Extract the custom-layouts directory to your computer
  3. Upload the custom-layouts directory to the /wp-content/plugins/ directory
  4. Activate the plugin in the Plugin dashboard

Importing the sample templates

To import the sample template data, follow these steps:

  1. Log in to your site as an administrator.
  2. Go to Tools: “Import” in the WordPress admin panel.
  3. Install the “WordPress” importer from the list.
  4. Activate & Run Importer.
  5. Upload the file from our plugin folder – custom-layouts/sample-data/sample-templates.xml – using the form provided on that page.
  6. You will first be asked to map the authors in this export file to users on the site. For each author, you may choose to map to an existing user on the site or to create a new user.
  7. WordPress will then import each of the templates into your site.
  8. Access your new templates via wp-admin -> “Custom Layouts” -> “Templates”


How do I add a layout to a page? (Block editor way)

Then you can use the Custom Layouts block.

All of the layout options are available from within the block inspector, or you can load a saved layout.

How do I add a layout to a page? (Shortcode method)

You can find this shortcode in the sidebar of your Layout admin page.

It will look something like: [custom-layouts id="123"]

Where 123 is the ID of your layout

How do I add a template to a layout?

  • First create a template by heading to “Templates” in the “Custom Layouts” admin menu or by clicking “add new” in the layout block.
  • Edit your template and when finished you can choose it from the “Post Template” dropdown in your layout.


نونبر 12, 2021
It's really a great plugin, but I would suggest to: - give the possibility to remove the post featured image (cannot delete it), when the user wants to use it as a background image instead for instance. - add a color overlay option to the background image - add "random order" to the posts in the loop - add the option to link the post excerpt to the post url - add the option to link the whole container to the post url
نونبر 3, 2021
still trying to figure out how to put some elements like meta on one line, overall looks and works pretty well
نونبر 1, 2021
Highly customizable and great support - install and enjoy! 🙂
غشت 21, 2021
I have tested many plugins of this type and this one is by far the best. Very many settings and possibilities. A few features are still missing (setting and numbering styling), but a lot of things can be styled manually, so ok. Good job! The best plugin of this type!
يوليوز 24, 2021
I can't believe how amazingly helpful this plugin is. I use it with Search and Filter Pro, and even though you don't have to pay for excellent tech support, you will get it with this awesome plugin. I needed to add a custom rating underneath each post element in the custom layout grid, and the plugin author very promptly responded to my query and pointed me towards the exact filter/hook I could use. My custom code worked perfectly inside that hook, and needless to say, I am one very happy customer. If you're unsure of whether Custom Layouts is a good plugin, just install and try it out at no risk or charge, Trust me, you won't regret it. If I could give this plugin more stars I would, but a max of 5 just proves that it really is the best post grid plugin.
Read all 15 reviews

Contributors & Developers

“Custom Layouts – Post + Product grids made easy” is open source software. The following people have contributed to this plugin.




  • Fix – support % to position the comment number in the comment field (when the result is 1 comment)
  • Fix – an issue where the featured image expanded past the width of a column
  • Fix – reset query cache when using WooCommerce manual ordering
  • Fix – a visual issue when dragging template elements
  • Fix – an issue when using the default post template block
  • Fix – an issue with the openInNewWindow value for featured media not being init correctly
  • Fix – a PHP warning when accessing a custom field which is not scalar
  • Improvement – update block.json in order to show additional info in the plugins repo
  • Improvement – better support for editor styles across different setups (when using FSE, with the GB plugin + without)
  • New – add default and manual sort orders to layouts


  • Fix – an regression introduced in 1.4.3 where our date elements would display todays date rather than the correct date


  • Fix – an issue with color palette support defined via add_theme_support
  • Fix – an issue with editor styles not being loaded since WP 5.8
  • Fix – an i18n issue with formatting dates on the frontend
  • Fix – various CSS issues since WP 5.8
  • Fix – an issue when opening a layout or template modal and the canvas width was being calculated incorrectly
  • Fix – a WPML issue when not using the ATE, our templates wouldn’t load in admin
  • Fix – a WPML issue where our CSS was not being regenerated on the frontend for the correct language (after saving a template via admin)
  • Improvement – register our blocks via a json file so they are discoverable in the block library
  • Improvement – speed enhancements including preloading of some of our rest api requests
  • New – add option to open links in new window for Featured Media and Post Title blocks


  • Fix – an issue with shortcodes not working in our text block
  • Fix – template editor – an issue where clearing a color setting (to make it unset / transparent) was causing defaults to be loaded instead
  • Fix – a PHP warning on activation
  • New – support for WPML + Advanced Translation Editor


  • Fix – Templates – add alt text to featured images
  • New – Templates – comment count element
  • New – Templates – excerpt options – limit the manual excerpt length and hide the “read more” text
  • New – Templates + Layouts admin pages – integration with editor styles (for themes that support it) – only available with the latest Gutenberg plugin v10.6 (coming soon in WP core)


  • Fix – Layouts – ensure layouts are not affected by global pagination when pagination is set to “none”
  • Fix – Templates – default settings had some spacing issues
  • Fix – Templates – an issue where the “image source” option was not displaying if the post didn’t have a featured image
  • Fix – Templates – save the last preview content source when saving the template editor via the admin page
  • Fix – Templates – link block – when a background had a gradient set it wasn’t applied to the hover / focus styles
  • Fix – Templates – Taxonomy block – a php warning when no taxonomy was selected
  • Improvement – added a specific class to the results when used with Search & Filter to allow for multiple search forms + results on a page
  • Improvement – modals are now larger and more responsive
  • New – Modal feature – sync preview width – modals editors now inherit the width of the layout they were launched from (for better previews)
  • New – Layouts – access saved layouts directly via the layout block – edit and create new layouts via the layout editor modal or use the block inspector.
  • New – Layouts – add template information to posts edit screen
  • New – Templates – added line height to the Typography panel
  • New – Templates – added new shortcode [custom-template] for displaying an individual post template with a single post (matches behaviour of the post template block)
  • Upgrade notice – we have changed the name of our layout shortcode – it is now [custom-layout] – your previous shortcodes will continue to work for some time.


  • Fix – layout issue with excerpt display (when the excerpt automatically adds the read more link)
  • Fix – an issue with transients not being used correctly when there are multiple layouts on the same page
  • Fix – an issue with tax_query not being set properly
  • Fix – an issue with pagination not working correctly on the front page
  • Fix – issues with before/after text in the custom field block
  • Fix – an issue with the gradient sample template css
  • Improvement – increase template editor max preview width to 1000px
  • New – support html as a custom field type
  • New – offset query paramater (works with pagination)
  • New – post type block


  • Release notes –
  • Fix – some query issues when taxonomy query was disabled (but the settings were still being applied)
  • Fix – some instances where our assets were not being supplied the correct version number, and consequently remained cached after an update
  • Fix – author gravatar was not scaling with font size
  • Fix – various issues to do with popovers and tooltip alignment
  • Fix – regenerate CSS feature was not fully regenerating the CSS
  • Fix – by default, select display name in author block rather than full name (full name can be empty)
  • Fix – actions were not firing (filters were ok) – we were mixing back slash and forward – now all filters + actions use forward slashes only
  • Update – required WP version to 5.7
  • Update – sample templates – addition of taxonomies + new spacing controls
  • Update – admin icons for some template blocks
  • New – Filters + actions for frontend blocks
  • New – change container size of a block to be full width or wrap to content (new toolbar button)
  • New – “fill last row” layout option – you can now stretch the last row of a grid if results do not fill all of the columns
  • New – Custom Field block – display the value of a custom field in your templates as a string (restrict by words/characters) or formatted number (with decimals), or a formatted date (custom formatting options)
  • New – Taxonomies block – list any combination of taxonomy terms in your templates
  • New – allow unit types for margins, padding and border radius – upgrade components to use BoxControl


  • Fix – an issue when using the query restrictions the first time (in a new layout)
  • Fix – an issue with the S&F integration and Polylang
  • Fix – issues with custom classes on the layout block and layout shortcode
  • Fix – issues with the font size selector
  • Fix – a layout glitch when dragging the first block into a template
  • Fix – prevent saving of a new template via modal, until a title has been set
  • Improvement – when creating a new template via the modal, auto select it in the layout after saving
  • New – no results message – add your own message to display when the query settings return no results


  • Improvement – Change the label of the “Custom Layout” block to “Posts Layout”
  • New – “Post Template” Block – Drop into an FSE Query block or use the post selector to display any post with any template
  • New – Query options for Layouts – select multiple post types and restrict by tag/category/taxonomy


  • Fix – a JS error when launching the template editor modal
  • New – the template editor modal now uses the query from the layout to display the set of posts for previews
  • New – responsive columns – choose how many columns to show for Mobile, Tablet and Desktop
  • New – settings page to set responsive breakpoints + regenerate CSS


  • Fix – missing files from bad commit


  • Fix – issue with the order paramters on the frontend
  • Fix – issue with the sticky post paramater on the frontend
  • Fix – issue with block align not working on the frontend
  • Fix – add loaders/placeholders to layout block + admin page
  • Fix – an issue with CSS not loading due to a https bug in wp_uploads_url()


  • New – Add visual editing to the layout admin page


  • Fix – an issue with Post Title not being displayed correctly


  • Fix – an issue with CSS generation
  • Fix – Rename “Custom Layouts” block to “Custom Layout”
  • New – Show a default image icon when no image is present + allow color to be changed


  • Fix – Enable link on featured image was not working
  • Fix – Modal template title not showing up correctly
  • Fix – Grid spacing not working
  • Fix – Border color not being set properly
  • Fix – Update CSS file when templates are drafted / trashed / deleted
  • Improvement – store queried IDs in transients (they will get complex eventually)
  • Improvement – update icon (still room for improvement)
  • Improvement – Theme colours + gradients now available in template editor admin page with WP 5.7 or Gutenberg 9.7+
  • Improvement – Update all frontend class names to use BEM naming conventions for predictable and reliable naming (we do increase the specificity, though)
  • New – Gradient picker for background colors
  • New – Alpha transparency for all color pickers
  • New – Create new templates directly from the layout block
  • New – Equal height rows (when not using masonry)
  • New – Featured Image options – set image size, ratio and fit mode
  • New – Add support for layout block alignment (supports wide and full width)
  • New – Demo templates


  • New – Gutenberg Integration – New block + modal editor
    • Layout Block – build layouts using the new layout block
    • Modal Template Editor – get the full template editor as a modal from within the layout block
  • Fix – update version number whenever templates are saved to prevent caching of frontend CSS
  • Fix – remove admin-ajax dynamic CSS and opt to use inline CSS as a fallback instead
  • Fix – store generated CSS in post meta for faster loading, and only regenerate the updated templates when needed
  • General UI fixes


  • Fix – issue with imagesLoaded & re-initialising the layout on frontend
  • Fix – issue with frontend date formatting when “custom” was chosen (thanks @paaljoachim)
  • Fix – issues with the padlock unsetting in our dimension controls
  • Fix – allow for multiple layouts on a single page + support for multiple masonry instances


  • Initial version.


  • Init project setup