Title: Page Composer — Basic
Author: Sergey Gorev / Page Composer
Published: <strong>སྤྱི་ཟླ་བརྒྱད་པ། 30, 2026</strong>
Last modified: སྤྱི་ཟླ་དགུ་པ། 1, 2026

---

Search plugins

![](https://ps.w.org/page-composer-basic/assets/banner-772x250.png?rev=3672612)

![](https://ps.w.org/page-composer-basic/assets/icon-256x256.png?rev=3672598)

# Page Composer — Basic

 By [Sergey Gorev / Page Composer](https://profiles.wordpress.org/segorev/)

[Download](https://downloads.wordpress.org/plugin/page-composer-basic.1.6.83.zip)

 * [Details](https://dzo.wordpress.org/plugins/page-composer-basic/#description)
 * [Reviews](https://dzo.wordpress.org/plugins/page-composer-basic/#reviews)
 *  [Installation](https://dzo.wordpress.org/plugins/page-composer-basic/#installation)
 * [Development](https://dzo.wordpress.org/plugins/page-composer-basic/#developers)

 [Support](https://wordpress.org/support/plugin/page-composer-basic/)

## Description

Page Composer — Basic replaces the default editor on Posts and Pages with the Page

Composer visual editor. Compose Posts and Pages from real components (Text, Image,
WooCommerce blocks) and render them with the bundled PCEditor library.

Features:

 * Page Composer editor on Posts, Pages and the Page Templates post type.
 * Composed content is stored as JSON in post meta and compiled into
    wp_posts.post_content
   as an HTML snapshot on every save — so WordPress search, feeds and other plugins
   see real page text while the live page always renders fresh from the JSON.
 * Native revisions cover both the snapshot and the JSON (WP 6.4+ revisioned
    meta)—
   restoring a revision restores the composition.
 * Page Composer  Reindex: rebuild all snapshots after component-template
    changes(
   theme overrides, markup edits) without re-saving every post.
 * Rendering via the PCEditor general library, with theme-overridable templates
   (
   drop `{Component}.php` into your theme’s `pce_templates/`).
 * Per-component CSS (the `css_props` field) compiled into media queries.
 * Settings (Editor / Components / Reindex tabs): enable the editor (it
    replaces
   the WordPress block editor and Site Editor on Posts and Pages), allowed roles,
   default Row grid, media-query sizes, and CSS output.
 * Detects conflicting page builders (Elementor, WPBakery, Divi, Beaver Builder,
   …)
   and disables the editor with a notice while any is active.
 * Load/Save page templates, stored as a custom post type and re-editable in the
   editor.
 * WooCommerce components (18) via shortcodes — products, recent/featured/sale/
   
   best-selling/top-rated, by category/attribute, single product, related, add to
   cart (+ URL), cart, checkout, my account, order tracking.
 * WordPress-widget components (13) — Search, Categories, Recent Posts, Tag Cloud,
   
   Archives, Calendar, Menu, Meta, Pages, Recent Comments, RSS, Links, Text.
 * Raw HTML and Raw JS components for embedding custom markup and scripts.
 * Contact Form 7 component (own editor tab) — embed a form by its ID and
    optional
   title (offered while the Contact Form 7 plugin is active).
 * Content components: Title (configurable tag + font size), Quote, Separator,
    
   CTA Button (colors as CSS variables) and Google map (Maps Embed API key in Settings
   Components; keyless embed without one).
 * “Page Composer — Full Width” page template (Page Attributes  Template) —
    the
   active theme’s header + footer only, content full-width (classic + block themes).
 * Default Row/Col grid stylesheet loaded in the active theme (disable with the
   
   pce_load_grid_styles filter, or override the –pce-grid-* custom properties).
 * Configurable Row column-layout presets (Components  Row layouts) — a visual
    
   bar builder, fed to the editor as editor.hooks.filters.components.Row.layouts.
 * Yoast SEO content analysis integration.
 * Filters: `pce_components`, `pce_css_field`, `pce_editor_enabled`,
    pce_load_assets,`
   pce_load_grid_styles`, `pce_content_meta_key`, pce_pre_save_content, `pce_load_content`.

No account or API key is needed — activate the plugin and the editor works.

#### WooCommerce support

Page Composer ships ready-made components for WooCommerce stores: products
 (recent,
featured, on sale, best selling, top rated), products by category or attribute, 
a single product, related products, add to cart (and its URL), cart, checkout, my
account and order tracking. They render through WooCommerce’s own shortcodes, so
they appear in the editor only while WooCommerce is installed and active, and they
follow your WooCommerce templates and styling. WooCommerce itself is not bundled
or required — without it, Page Composer simply omits these components.

Page Composer is an independent product. It is not affiliated with, endorsed by

or sponsored by Automattic or WooCommerce. “WooCommerce” and “WordPress” are trademarks
of their respective owners and are used here only to describe compatibility.

### External services

The plugin performs no license or activation calls — no account and no API key
 
are needed, and nothing is sent automatically in the background.

**Feedback to page-composer.com (user-initiated only).** Two optional forms
 send
data to `https://page-composer.com/plugin-feedback`, and only when an administrator
explicitly submits them:

 * _Leave a testimonial_ (linked from a dismissible admin notice): sends the
    star
   rating and testimonial text the admin typed.
 * _Deactivation survey_ (shown when deactivating the plugin; fully skippable
    via“
   Skip & deactivate”, which sends nothing): sends the selected reason and the optional
   description.

Both submissions also include the site’s domain name, the plugin version and
 the
WordPress version, so we can reproduce reported problems. No page content, no personal
data and no visitor data is ever sent, and nothing is sent without an explicit form
submission. This service is operated by Page-composer.com — see our terms (https://
page-composer.com/terms) and privacy policy (https://page-composer.com/privacy).

**Google Maps (frontend embed, only if you use the Google map component).**
 When
a page contains the Google map component, that page embeds a map in an iframe from
google.com — through the Google Maps Embed API when a key is configured under _Page
Composer  Settings  Components_, or Google’s keyless classic embed when it is not.
The embed is requested by the visitor’s browser when such a page loads, and carries
the map address/coordinates you entered in the component plus the standard request
headers the browser sends to any site (IP address, user agent, referrer). The plugin
itself sends no data to Google from the server, and pages without this component
make no Google requests at all. This service is provided by Google: terms of service(
https://policies.google.com/terms), privacy policy (https://policies.google.com/
privacy), Google Maps Platform terms (https://cloud.google.com/maps-platform/terms).

### Source code

The editor bundle shipped in `assets/editor/js/pceditor_wp_basic.js` is a
 standard
webpack production build of the Page Composer editor. Bundled third-party libraries(
React, ReactDOM and small MIT/ISC utilities) are listed with their licenses in `
assets/editor/js/pceditor_wp_basic.js.LICENSE.txt`; the plugin’s own PHP is unminified
throughout. Questions about the build are welcome at sergey@page-composer.com.

### Storage hooks

By default the composed JSON lives in the `_pce_content` post meta, and a
 compiled
HTML snapshot of it is written to `wp_posts.post_content` on every save (that snapshot
is what search/feeds/REST consumers read; the live page renders from the JSON). 
Three filters customise the storage:

    ```
    pce_content_meta_key — `filter( string $meta_key )`
    ```

Rename the post meta key that holds the JSON (default `_pce_content`).
 Applied 
consistently to every read/write, including revisioning and the Reindex tool. Register
it before `init` priority 10 (top-level in your plugin or in the theme’s functions.
php / `after_setup_theme`) and in every context (admin, frontend, cron) — the one-
time storage migration and the revisioned meta registration resolve the key there.
Adopting the filter on a site with existing content requires copying the `_pce_content`
meta to the new key yourself.

    ```
    pce_pre_save_content — `filter( bool $handled, string $json, array $postarr )`
    ```

Runs on save (inside `wp_insert_post_data`). Store `$json` yourself (a custom
 table,
an external service) and return `true`; the plugin then writes neither the meta 
nor the snapshot. `$json` arrives unslashed and JSON-validated (or empty when the
composition was cleared).

    ```
    pce_load_content — `filter( string $json, WP_Post $post )`
    ```

Runs wherever the plugin reads a post’s composition (editor metabox, frontend
 renderer,
Yoast analysis). Receives the meta value as the default; return your stored JSON
instead.

Example — rename the meta key:

    ```
    add_filter( 'pce_content_meta_key', fn () => '_my_composition' );
    ```

Example — store the JSON in a custom table:

    ```
    add_filter( 'pce_pre_save_content', function ( $handled, $json, $postarr ) {
        my_table_store( (int) $postarr['ID'], $json );
        return true;
    }, 10, 3 );

    add_filter( 'pce_load_content', function ( $json, $post ) {
        $stored = my_table_fetch( $post->ID );
        return $stored !== null ? $stored : $json;
    }, 10, 2 );
    ```

The saved page templates (Load/Save window) follow the same storage: JSON in
 the
templates CPT’s meta, snapshot in its post_content. Saved component settings (each
component’s Load/Save-settings window) are posts of the pce_comp_templates post 
type — the component name in `_pce_component_tag`, the settings JSON in `_pce_component_json`—
the same storage the Pro plugin uses, so an upgrade keeps every saved version. (
Pre-existing entries in the old `pce_components_store` option are migrated automatically
once; the option is kept as a downgrade backup until uninstall.)

## Installation

 1. Upload the plugin to `/wp-content/plugins/` (or install it from the Plugin
     Directory)
    and activate it.
 2. Open _Page Composer  Settings_ and enable the editor — it replaces the
     block editor
    on Posts and Pages.
 3. Edit any Post or Page: compose it from components, then Update as usual.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Page Composer — Basic” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ Sergey Gorev / Page Composer ](https://profiles.wordpress.org/segorev/)

“Page Composer — Basic” has been translated into 1 locale. Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/page-composer-basic/contributors)
for their contributions.

[Translate “Page Composer — Basic” into your language.](https://translate.wordpress.org/projects/wp-plugins/page-composer-basic)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/page-composer-basic/),
check out the [SVN repository](https://plugins.svn.wordpress.org/page-composer-basic/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/page-composer-basic/)
by [RSS](https://plugins.trac.wordpress.org/log/page-composer-basic/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.6.83

 * Components window: a long category list no longer overlaps the bar with the
    
   action buttons.
 * Fixed a potential editor freeze in background tabs when a save/load request
    
   failed — request errors now log to the browser console instead of showing a blocking
   alert.

#### 1.6.82

 * Columns can now be reordered by dragging the new handle in a column’s
    toolbar—
   the neighbouring columns slide aside to show where it will land.
 * Security hardening: composition JSON is now filtered by author capability on
   
   every save, mirroring how WordPress core treats post_content. Authors without
   the `unfiltered_html` capability have field values passed through wp_kses_post()
   and script payloads (Raw JS) removed; authors with the capability are unaffected.

#### 1.6.80

 * First public release on WordPress.org.
 * Visual component editor for Posts and Pages with saved page templates and
    per-
   component saved settings.
 * WooCommerce (18), WordPress-widget (13), Contact Form 7 and content
    components;
   Yoast SEO analysis integration.
 * Full Width page template, configurable Row layouts, grid stylesheet filters.
 * Wysiwyg paste clean-up (data-* attributes and copy artifacts are stripped).
 * Interface translated into 12 languages.

## Meta

 *  Version **1.6.83**
 *  Last updated **ཉིནམ་ 3། ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.4 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 8.1 or higher **
 *  Languages
 * [English (US)](https://wordpress.org/plugins/page-composer-basic/) and [Russian](https://ru.wordpress.org/plugins/page-composer-basic/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/page-composer-basic)
 * Tags
 * [components](https://dzo.wordpress.org/plugins/tags/components/)[drag-and-drop](https://dzo.wordpress.org/plugins/tags/drag-and-drop/)
   [editor](https://dzo.wordpress.org/plugins/tags/editor/)[page builder](https://dzo.wordpress.org/plugins/tags/page-builder/)
 *  [Advanced View](https://dzo.wordpress.org/plugins/page-composer-basic/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/page-composer-basic/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/page-composer-basic/reviews/)

## Contributors

 *   [ Sergey Gorev / Page Composer ](https://profiles.wordpress.org/segorev/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/page-composer-basic/)