Disclaimer: This website requires Please enable JavaScript in your browser settings for the best experience.

Dev GuideAPI ReferenceChangelog
Dev GuideAPI ReferenceChangelogUser GuideDev CommunityOptimizely AcademySubmit a ticketLog In
Dev Guide

Create structured content for WordPress

How to add structured content for WordPress in Optimizely Content Marketing Platform (CMP).

Optimizely Content Marketing Platform (CMP) supports adding structured content from the Open API for WordPress Advanced Custom Fields (ACF).

Use POST https://api.cmp.optimizely.com/structured-content/content-types to create the structured content. See the API reference for information.

You must have the following mandatory fields in the structured content, along with other ACF fields and taxonomy:

  • Webpage Analytics
  • Body
  • Featured Image
  • WordPress Meta Info

Webpage Analytics

This is automatically created for your organization.

Click Webpage Analytics to see the details.

Copy the GUID from the URL.

JSON example

Use the structured content Reference field to add the webpage analytics.

{
  "core": {
    "key": "webpage",
    "name": "WebpageAnalytics",
    "is_list": false,
    "is_required": false,
    "need_internationalization": false,
    "min_list_length": 0,
    "max_list_length": -1,
    "field_type": "content-type",
    "source_id": null,
    "source_metadata": null,
    "order_index": 0,
    "help_text": null,
    "editor_metadata": null
  },
  "allowed_content_types": ["<GUID_COPIED_FROM_URL>"],
  "ref_type": 3,
  "allow_ref_edit": true,
  "default_value": null
}

Body

This is a Rich Text field.

JSON example

{
  "core": {
    "key": "body",
    "name": "Body",
    "is_list": false,
    "is_required": true,
    "need_internationalization": false,
    "min_list_length": 0,
    "max_list_length": -1,
    "field_type": "rich-text",
    "source_id": null,
    "source_metadata": "{\"is_custom_post_type_field\": false}",  // Adding this is not mandatory but recommended
    "order_index": 1,
    "help_text": null,
    "editor_metadata": null
  },
  "min_visual_text_length": 1,
  "max_visual_text_length": -1,
  "default_values": null
}

Featured Image

This is an Asset field for Image type.

JSON example

{
  "core": {
    "key": "featuredImage",
    "name": "Featured Image",
    "is_list": false,
    "is_required": false,
    "need_internationalization": false,
    "min_list_length": 0,
    "max_list_length": -1,
    "field_type": "library-asset",
    "source_id": null,
    "source_metadata": "{\"is_custom_post_type_field\": false}",  // Adding this is not mandatory but recommended
    "order_index": 2,
    "help_text": null,
    "editor_metadata": null
  },
  "allowed_types": ["image"],
  "default_values": null
}

WordPress Meta Info

The WordPress Meta Info should be automatically created from your Wordpress connection. If not, contact Optimizely Support, or create it by using Open API. See the following JSON example to create WordPress Meta Info.

🚧

Important

Do not create the WordPress Meta Info component if it is already created by the system.

Click WordPress Meta Info to see details.

Copy the GUID from the URL.

JSON example

{
  "core": {
    "key": "wpMetaInfo",
    "name": "WordPress Meta Info",
    "is_list": false,
    "is_required": false,
    "need_internationalization": false,
    "min_list_length": 0,
    "max_list_length": -1,
    "field_type": "content-type",
    "source_id": null,
    "source_metadata": null,
    "order_index": 14,
    "help_text": null,
    "editor_metadata": null
  },
  "allowed_content_types": ["<wordpress_meta_info_component_guid>"],
  "ref_type": 3,
  "allow_ref_edit": true,
  "default_value": null
}

Full JSON Payload

Use https://api.cmp.optimizely.com/v3/structured-content/content-types to create a WordPress Meta Info component. See the API reference for information.

{
  "details": {
    "name": "WordPress Meta Info",
    "component": true,
    "disabled": false
  },
  "source": "Welcome",
  "source_id": "wp_meta_info",
  "source_metadata": null,
  "created_by": "<user_guid>",
  "field_definitions": [
    {
      "core": {
        "key": "wpMetaTitle",
        "name": "Meta Title",
        "is_list": false,
        "is_required": false,
        "need_internationalization": false,
        "min_list_length": 1,
        "max_list_length": -1,
        "field_type": "text-field",
        "source_id": null,
        "source_metadata": null,
        "order_index": 0,
        "help_text": null,
        "editor_metadata": null
      },
      "validation_pattern": ".*",
      "min_length": 0,
      "max_length": -1,
      "default_values": null
    },
    {
      "core": {
        "key": "wpMetaDescription",
        "name": "Meta Description",
        "is_list": false,
        "is_required": false,
        "need_internationalization": false,
        "min_list_length": 1,
        "max_list_length": -1,
        "field_type": "text-field",
        "source_id": null,
        "source_metadata": null,
        "order_index": 1,
        "help_text": null,
        "editor_metadata": null
      },
      "validation_pattern": ".*",
      "min_length": 0,
      "max_length": -1,
      "default_values": null
    }
  ]
}

Full example

This includes Webpage Analytics, Body, Featured Image, Authors, Tags, and Category.

{
  "details": {
    "name": "WordPress ACF Enabled Post Types",
    "component": false,
    "disabled": false
  },
  "source": "wordpress",
  "source_id": "<integration_guid>",
  "source_metadata": "{\"name\":\"<custom_post_type_name>\"}",
  "created_by": "<user_id>",
  "field_definitions": [
    {
      "core": {
        "key": "webpage",
        "name": "WebpageAnalytics",
        "is_list": false,
        "is_required": false,
        "need_internationalization": false,
        "min_list_length": 0,
        "max_list_length": -1,
        "field_type": "content-type",
        "source_id": null,
        "source_metadata": null,
        "order_index": 0,
        "help_text": null,
        "editor_metadata": null
      },
      "allowed_content_types": ["<webpage_analytics_component_guid>"],
      "ref_type": 3,
      "allow_ref_edit": true,
      "default_value": null
    },
    {
      "core": {
        "key": "body",
        "name": "Body",
        "is_list": false,
        "is_required": true,
        "need_internationalization": false,
        "min_list_length": 0,
        "max_list_length": -1,
        "field_type": "rich-text",
        "source_id": null,
        "source_metadata": "{\"is_custom_post_type_field\":false}",
        "order_index": 1,
        "help_text": null,
        "editor_metadata": null
      },
      "min_visual_text_length": 1,
      "max_visual_text_length": -1,
      "default_values": null
    },
    {
      "core": {
        "key": "category",
        "name": "Category",
        "is_list": false,
        "is_required": false,
        "need_internationalization": false,
        "min_list_length": 1,
        "max_list_length": -1,
        "field_type": "json",
        "source_id": null,
        "source_metadata": null,
        "order_index": 4,
        "help_text": null,
        "editor_metadata": {
          "editorGuid": "<remote_field_guid>",
          "editorConfig": {
            "taxonomy": "category",
            "isMultiSelect": true,
            "integrationInstanceId": "<integration_guid>"
          }
        }
      },
      "base_type": "json",
      "default_values": null
    },
    {
      "core": {
        "key": "featuredImage",
        "name": "Featured Image",
        "is_list": false,
        "is_required": false,
        "need_internationalization": false,
        "min_list_length": 0,
        "max_list_length": -1,
        "field_type": "library-asset",
        "source_id": null,
        "source_metadata": "{\"is_custom_post_type_field\":false}",
        "order_index": 2,
        "help_text": null,
        "editor_metadata": null
      },
      "allowed_types": ["image"],
      "default_values": null
    },
    {
      "core": {
        "key": "author",
        "name": "Authors",
        "is_list": false,
        "is_required": false,
        "need_internationalization": false,
        "min_list_length": 1,
        "max_list_length": -1,
        "field_type": "json",
        "source_id": null,
        "source_metadata": "{\"is_custom_post_type_field\":true}",
        "order_index": 3,
        "help_text": null,
        "editor_metadata": null
      },
      "base_type": "json",
      "default_values": null
    },
    {
      "core": {
        "key": "tags",
        "name": "Tags",
        "is_list": false,
        "is_required": false,
        "need_internationalization": false,
        "min_list_length": 1,
        "max_list_length": -1,
        "field_type": "json",
        "source_id": null,
        "source_metadata": null,
        "order_index": 5,
        "help_text": null,
        "editor_metadata": {
          "editorGuid": "<remote_field_guid>",
          "editorConfig": {
            "taxonomy": "post_tag",
            "isMultiSelect": true,
            "integrationInstanceId": "<integration_guid>"
          }
        }
      },
      "base_type": "json",
      "default_values": null
    },
    {
      "core": {
        "key": "wpMetaInfo",
        "name": "WordPress Meta Info",
        "is_list": false,
        "is_required": false,
        "need_internationalization": false,
        "min_list_length": 0,
        "max_list_length": -1,
        "field_type": "content-type",
        "source_id": null,
        "source_metadata": null,
        "order_index": 14,
        "help_text": null,
        "editor_metadata": null
      },
      "allowed_content_types": ["<wordpress_meta_info_component_guid>"],
      "ref_type": 3,
      "allow_ref_edit": true,
      "default_value": null
    }
  ]
}

Update structured content

You can update structured content for WordPress by using POST /structured-content/content-types/{content_type_id}/versions.

Remote fields

CMP remote fields power the WordPress v2 ACF fields on the backend. See Remote fields to learn more.