Skip to content

BeTheme

New in v3.14.0, Pro. BeTheme is one of the most-sold WordPress themes ever, and it ships its own page builder, BeBuilder. That combination means an agent connected to a BeTheme site could previously read the site but not build on it: the Elementor and Gutenberg tools do not touch BeBuilder’s data, and BeTheme’s 830 theme settings all live in one option.

Two dispatcher tools cover both halves. They register only when BeTheme is the active theme and BeBuilder is the builder selected on EMCP Tools → Page Builders.

Both tools take { operation, arguments }. Omit operation to get back the list of available operations for that tool.

Work in the order the operations are numbered below: read the context, discover what item types exist, read the schema for the ones you want, then write. Guessing an item’s field names produces a page that saves without error and renders as an empty section.

Read-only. Five operations. Like every Pro tool, it starts disabled on a new EMCP install; switch it on under EMCP Tools → Tools → BeBuilder.

OperationWhat it returns
get-contextBeTheme version, whether BeBuilder is usable, which settings groups exist, and how many pages already use BeBuilder. Start here.
get-settingsCurated settings with value plus type, label and group. Optional group or keys; omit both for everything.
list-item-typesEvery BeBuilder item type the installed theme registers. Optional search.
get-item-schemaThe settings an item type accepts, read from the theme’s own renderer. Takes type or types: [...].
get-pageA page’s BeBuilder structure as sections, wraps and items, each with its uid, type and settings. Takes post_id.

Disabled by default. Turn it on under EMCP Tools → Tools → BeBuilder (section BeTheme + BeBuilder) and choose Save changes in the save bar. It changes global theme settings and can replace a page’s entire builder content, so it ships off for the same reason the other theme write tools do.

OperationWhat it does
update-settingsWrites curated settings from values: { key: value }. A key outside the curated list is reported in skipped[] rather than written.
set-pageReplaces a page’s whole BeBuilder content. Structure is validated before anything is written.
add-sectionAppends one section, leaving existing sections alone. Takes an optional position.

BeTheme keeps all of its settings, around 830 keys, in a single autoloaded betheme option. Handing an agent all of them wastes context and invites damage, so EMCP exposes a curated 34-key allowlist across five groups:

GroupCovers
colors (10 keys)Body, header, footer, subheader, action bar and form backgrounds; the highlight colour; content, heading and menu text
typography (6 keys)Body, heading, menu, title, blockquote and lead font families; sizes aren’t in the curated set
layout (3 keys)Site layout mode, responsive on/off, and the back-to-top button toggle
header-footer (9 keys)Header style, height and full-width; the logo image, text and width; footer layout, style and padding
blog (6 keys)Blog and single-post layout options

Anything outside that list is left alone. get-settings returns the type and label for each key, so an agent can tell a colour from a font size without guessing.

A BeBuilder page is three levels deep, stored in the mfn-page-items post meta:

section
└── wrap (a column; its `size` sets the column width)
└── item (a widget; `type` picks which one)

set-page takes exactly that shape:

betheme-write({
operation: "set-page",
arguments: {
post_id: 42,
sections: [
{
wraps: [
{
size: "1/1",
items: [
{ type: "heading", size: "1/1", attr: { title: "Hello", tag: "h1" } }
]
}
]
}
]
}
})

Item settings live under attr. set-page also accepts a top-level fields key as an alias and converts it for you, so you don’t lose content over that naming alone, but the keys inside still have to match get-item-schema exactly. A field name it doesn’t recognize is stored without complaint and simply never reaches the renderer, so when something doesn’t show up, check the field names first. A missing size on a wrap or item doesn’t vanish either, betheme-write defaults it to 1/1 (full width) before writing, so the usual symptom of a missing size is an unintended full-width block, not an empty one.

BeBuilder items render through the theme’s own shortcode functions, and each one declares the fields it accepts. get-item-schema reads that declaration directly rather than shipping a hand-written list, so the schema matches whatever version of BeTheme is installed on the site, including items added by a theme update.

BeTheme has its own template system, and EMCP Themer takes over the whole document when it has a body template that matches the page. Both are legitimate ways to build a site, so EMCP does not switch either off for you.

When a real overlap exists, an admin notice appears saying which one is winning and pointing at the setting to change if you wanted the other. If you plan to use BeTheme’s templates, switch the Themer module off under EMCP Tools → Modules and choose Save modules; if you plan to use Themer, the notice tells you it is already in charge.

  • “What BeTheme settings can you change on this site?”
  • “Set the highlight colour to #0F62FE and the body font to Inter.”
  • “Show me the BeBuilder structure of the home page.”
  • “Add a two-column section to page 42 with a heading on the left and an image on the right.”
  • BeTheme active as the site’s theme
  • EMCP Tools Pro
  • BeBuilder selected on EMCP Tools → Page Builders
  • betheme-read switched on, and betheme-write for anything that writes, under EMCP Tools → Tools → BeBuilder

Pick the BeBuilder card under 1. Standalone builder on EMCP Tools → Page Builders and choose Save changes to expose its tools. The card reads Not detected and cannot be picked unless BeTheme is the active theme and EMCP Pro is licensed. It occupies the standalone integration slot; Gutenberg and enabled block packs remain available. Once saved, the tools appear on their own BeBuilder tab on EMCP Tools → Tools. See builder setup.