WPBakery fix

Why Is [vc_row] Showing on My Page? WPBakery Shortcodes as Text

A WPBakery page is stored as text: square-bracket tags wrapped around your words. Something has to translate those tags on the way to the browser, and when it does not, visitors see the brackets. Which tags show, and on which part of the site, narrows the cause to one of five.

wp-admin · pages · shortcode check
Shortcode render check
Where the brackets are coming from
6 checks
  • Passjs_composer pluginActive
  • FailTheme core pluginInactive
  • WarnTheme-named elements14 unrendered
  • FailExcerpts and searchRaw tags
  • WarnRows nested in rows2 pages
  • PassBackground-loaded contentRenders
Illustrative — theme elements lost their plugin, excerpts skip the filter2 causes

What you are seeing

  • Every page shows [vc_row] and [vc_column] around the text
  • The layout is fine, but a few tags named after your theme print as text
  • Pages look right while search results and blog excerpts show brackets
  • Content loaded by a popup, a filter or a load-more button arrives as raw tags
  • One row on one page prints its tags and the rest of the page renders

Why it happens on WPBakery

Most common first.

  1. 1

    Nothing is registered to read the tags

    WPBakery's plugin, js_composer, registers every vc_ shortcode when it loads. If it is deactivated, deleted or paused by WordPress after a fatal error, the tags have no translator and print as written, on every page at once. This is the wholesale version of the problem, and the rest of this list covers the partial ones.

  2. 2

    The theme's companion plugin is off

    Themes that bundle WPBakery add their own elements, and they usually register them from a separate core or extensions plugin. Deactivate that plugin, or switch themes, and the standard rows and columns keep working while every theme-made element prints its tag. A page that is mostly fine with a few stray brackets is this.

  3. 3

    The content is being shown without being processed

    Shortcodes are translated when a page's content passes through WordPress's content filter. Excerpts, search results, related-post boxes and some SEO descriptions take the raw text instead. The page itself renders, and the summary of it elsewhere shows brackets.

  4. 4

    Content fetched in the background

    WPBakery registers its elements for ordinary page loads. Content requested by script, such as a quick-view window, an infinite-scroll batch or a filterable portfolio, can be assembled before those elements are registered. The same post renders at its own address and arrives as tags through the popup.

  5. 5

    Tags nested in a way WordPress cannot parse

    WordPress's shortcode parser cannot place a shortcode inside another of the same name. That is why WPBakery uses vc_row_inner for a row within a row. Paste a full row inside another in the text view, drop a closing tag or let the block editor split the content into separate blocks, and the inner tags print as text.

How to fix it, in order

Least invasive first. Stop at the step that fixes it.

  1. 1

    Note exactly which tags appear, and where

    Before changing anything, view the affected pages in a private window and write down the tag names. All vc_ tags on every page means the builder is not running. Only theme-named tags means the theme's plugin. Brackets only in excerpts, search or popups means the content is being used unprocessed.

  2. 2

    Check both plugins on the Plugins screen

    Look for WPBakery Page Builder and for a plugin named after your theme, often labeled core, extensions or addons. Activate whichever is inactive. If WordPress emailed about a plugin it paused, read that message before reactivating, because the error behind the pause will return.

  3. 3

    Repair the nesting on the affected page

    Open the page in the backend editor and switch to classic mode to see the raw tags. Count the opening and closing pairs around the stray text. A row inside a row should be vc_row_inner, and a column inside it vc_column_inner. Correct the pair, update and reload.

  4. 4

    Keep the block editor away from builder pages

    Current versions include an option under WPBakery Page Builder, General Settings to disable the Gutenberg editor. If builder pages have been opened and converted to blocks, restore the last good version from the page's revisions, then switch that option on.

  5. 5

    Give excerpts and search results clean text

    For posts whose summaries show brackets, write a manual excerpt in the post's Excerpt field, which WordPress uses in preference to the raw content. If the theme's search or blog template prints content directly, that template needs a small change in a child theme to strip or process the shortcodes.

  6. 6

    Fix background-loaded content at the source

    If brackets appear only in popups, filters or load-more results, the component making the request has to ask WPBakery to register its elements first. That is a developer change in the theme or the plugin responsible. Until it is made, the quickest workaround is to keep builder layouts out of the content that loads that way.

Keep it from coming back

  • Before switching themes, list the theme-named elements in use and replace them with standard ones
  • Edit builder pages in the builder, not in the block editor or the Text tab
  • Write manual excerpts for posts built with the builder
  • Search the database for [vc_ after any migration, before WPBakery is removed

The permanent fix

A faster Next.js build, with a CMS made for your business

Stray brackets show how these pages are kept: in a private markup language inside the content field. If tags keep surfacing in new places, in search results, in feeds, in a popup someone added last month, the site is leaking its storage format wherever a plugin reads content directly. A Next.js build keeps content as plain structured fields in a custom CMS and renders it to static pages, so there is no markup language in the middle to leak.

On WPBakery todayOn Next.js with a custom CMS
What you keep updatedWordPress, the theme, its builder and every bundled plugin, all in stepNothing on a schedule. There is no theme or plugin stack to fall out of step
How a page is servedBuilt from the database on each visit, through the theme and its builderBuilt ahead of time and served as finished files from servers near the visitor
How you edit itA general-purpose builder with every option the theme shipsA CMS built around what your business actually changes: services, prices, photos, posts
What can break itAn update to any one of those parts, or a license that lapsesA change someone makes on purpose, tested before it goes live

Your content, your addresses and your rankings come with you: every page is moved, every old address is redirected, and you get a login to an editor that only shows what you need. A repair is still the right call for many sites, and we will say so when it is.

Free · No obligation

Want this fixed on your WPBakery site?

Tell us what you are seeing. We look at the site, tell you plainly what is wrong and what it takes, and quote a fixed price before any work starts.

Which of these sounds like you? (pick any)

Frequently asked

The working ones belong to WPBakery and the printed ones belong to your theme. Theme-made elements are registered by the theme or its companion plugin, and if that code is inactive or gone, only its tags lose their translator. Reactivate the companion plugin, or replace those elements with standard ones.

Those places show an excerpt, and an automatic excerpt is cut from the raw content before any shortcode is processed. A manual excerpt or a hand-written SEO description replaces it. Google's snippet catches up after it next crawls the page.

You can, and the brackets will go, along with the layout they described and some of the content. Headings, buttons and images in WPBakery are often stored inside the tag itself, as an attribute, so deleting tags deletes them too. Fix the cause, or convert the page properly.

Yes, if the missing builder was the cause. The tags are still in the database, complete with their settings, and an active copy of the builder translates them again. Theme-made elements need the theme's own plugin back as well. Nothing has to be typed in again.

Keep reading

CallGet a quote