Oembed field for ProcessWire

This Project is available on Github

Github Repository Download Master


What it does

Store, collect and update oembed data from external sources. It used the great PHP Library Essence by Félix Girault and adds some processwire magic. This field is based on the example module FieldtypeEvents by Ryan and the TextformatterOEmbed by felixwahner. Thanks!


  • Simple embedding of content via oembed endpoints and opengraph crawling
  • Backend preview
  • Searching in oembed data with $pages->find()
  • Autoupdate with lazycron
  • Support for ProcessGraphQL with the additional module GraphQLFieldtypeOembed


  1. Copy the files for this module to /site/modules/FieldtypeOembed/
  2. Execute the following command in the /site/modules/FieldtypeOembed/ directory.
    composer install
  3. In admin: Modules > Refresh. Install Fieldtype > Oembed.
  4. Create a new field of type Oembed, and name it whatever you would like. In our examples we named it simply "embed".
  5. Add the field to a template and edit a page using that template.


Modules > Configure > FieldtypeOembed


Setup the Lazycron schedule. The cache expiration is configurable in the field settings.


Custom Provider for Essence

You can configure your own Oembed or OpenGraph providers for Essence.
How to add custom providers (Essence Git)

    "getty": {
        "class": "OEmbed",
        "filter": "~gty\\.im/.+~i",
        "endpoint": "http://embed.gettyimages.com/oembed?url=:url"
    "neuerituale": {
        "class": "OpenGraph",
        "filter": "~neuerituale\\.com.?~i"

Field settings

Fields > embed > Details The FieldtypeOembed extends the FieldtypeURL (core). In addition to these settings, you can also set the cache time for the oembed data. The lazycron will update the data.


Field preview



Returns the Oembed object (WireData).

/** @var \ProcessWire\Oembed */

Check emptiness

/** @var boolean **/


/** @var string return the html from oembed result */

The Oembed object

// print_r($page->embed);

ProcessWire\Oembed Object
    [data] => Array
            [empty] => false
            [url] => http://www.youtube.com/watch?v=dQw4w9WgXcQ
            [html] => '...'
            [type] => video
            [title] => Rick Astley - Never Gonna Give You Up (Video)
            [width] => 200
            [height] => 113
            [version] => 1.0
            [authorUrl] => https://www.youtube.com/user/RickAstleyVEVO
            [authorName] => RickAstleyVEVO
            [providerUrl] => https://www.youtube.com/
            [providerName] => YouTube
            [thumbnailUrl] => https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg
            [thumbnailWidth] => 480
            [thumbnailHeight] => 360

Find pages

You can query the oembed result fields



You can query this field over ProcessGraphQL.
Please install the additional module GraphQLFieldtypeOembed.

Field definitions

myfield {
   empty: Boolean
   title: String
   authorName: String
   authorUrl: String
   type: String
   height: Int
   width: Int
   providerName: String
   providerUrl: String
   thumbnailHeight: Int
   thumbnailWidth: Int
   thumbnailUrl: String
   html: String
   url: String