Support » Plugin: Instant Articles for WP » Correct Transformer rule for [caption] shortcode

  • When uploading pictures to the WordPress backend I often fill in the caption field which results in code like this being generated

    [caption id="attachment_15046" align="aligncenter" width="520"]<img src=”; alt=”; width=”520″ height=”780″ class=”wp-image-15046″ /> HERE IS THE CAPTION[/caption]

    What I’m seeing in the debug info for your plugin is

    No rules defined for <div class=”wp-caption aligncenter”> in the context of InstantArticle

    And then the code is missing from the transformed markup. Both the image and the caption don’t make it through the transformer.

    Is this something the transformer should be picking up? If not, how would I extend the code to deal with this (pretty normal) case?


    WordPress Version 4.4.2
    Plugin Version 2.9
    PHP Version 5.5.9-1ubuntu4.14

Viewing 10 replies - 1 through 10 (of 10 total)
  • There’s at least a dozen people with the same (very common) problem from WordPress in the first 3 pages of this forum.

    The easy solution seems to be “remove the captions”, but that also is kind of silly, since maybe we want the captions (and FB kind of expects, though does not require captions).

    I found this thread which has example transformer rule for a different class, but I think it can be modified (haven’t tested yet)

    Content inside shortcode is omitted

    From some examples here:

    Given an example captioned image from my domain:

    <div id="attachment_9339" style="width: 660px" class="wp-caption aligncenter">
        <a href="" rel="attachment wp-att-9339">
            <img class="size-large wp-image-9339" src="" alt="Anti Autti snowboarding in powder in Kirro, Japan" width="650" height="406" srcset=" 650w, 400w, 768w, 300w, 800w, 1500w" sizes="(max-width: 650px) 100vw, 650px">
        <p class="wp-caption-text">Anti Autti in Kirro, Japan</p>

    Here’s my attempt to modify, using XPath:

                "class": "ImageRule",
                "selector" : "div.wp-caption aligncenter",
                "properties" : {
                    "image.url"  : {
                        "type" : "string",
                        "selector" : "//div/a/img",
                        "attribute": "src"
                    "image.caption" : {
                        "type" : "element",
                        "selector" : "//div/[class=wp-caption text]"

    Simply adding

    add_theme_support( 'html5', array( 'gallery', 'caption' ) );

    to functions.php worked for me.

    FWIW the PageFrog plugin solves the problem with captioned images. I had to delete all of my existing IA’s and refresh the feed, but they’ve all pulled in and are not displaying any errors now for the captioned images.

    There may be an issue with the slideshow/gallery (basically when I see it it’s duplicating the parent figure tag, which I just removed manually from the article’s HTML.

    Thread Starter lukecd


    dzemens, thanks for the follow up. when i try adding that transformer rule I get this error “Invalid JSON provided for custom rules code” … I’ll keep digging though.

    How are you finding the PageFrog plugin? I had high hopes for it at first, but then had a couple of problems and found the developers totally quiet on the support front.


    Yeah I think there was a missing curly brace in that Json. Also, it didn’t seem to work when I did try it, so your mileage may vary. You need to add one after the caption property block, like:

    "image.caption" : {
                        "type" : "element",
                        "selector" : "//div/[class=wp-caption text]"
                   }   <<### Add this

    I’m reasonably certain that’s the correct structure but I don’t know enough about how any of this works to be sure of what selectors to use, and between that and/or cache issues, I gave up trying to debug it and just switched to PF.

    PageFrog seems OK, at the very least it is working for me, and has solved two issues that the “official” page wasn’t handling correctly: captioned images, and Vimeo embeds (the latter use “op-interactive” class instead of “op-social”).

    I do notice that the project seems to be lacking now in terms of support. I may keep an eye on this one as well, and switch back to it, if it ever will work as advertised.

    I think, unfortunately, that this “Instant Articles” thing is really an enterprise level thing which FB kinda expected that publishers would be professional (i.e., with a team of interns and devs who build a custom script to handle the markup conversion). It doesn’t seem suited for the random person with a website or blog.

    Plugin issues aside, the entire process of review/approval is about the most painful thing I’ve done in 10+ years of blogging/writing on the internet. I think this is probably complicated by the fact that they just opened up the IA to everyone this month, and so both plugin Devs (if active) are being overwhelmed with totally n00b questions, as well as actual bugs/defects. Hopefully it clears up in a few weeks/months…

    Hi! I don’t know if you solved this, but somehow I figure it out, I HAVE NO IDEA HOW IT WORKS, BUT IT DOES!

    I added a separate rule just for the captions:

    “class”: “CaptionRule”,
    “selector” : “p.wp-caption-text”

    For some reason wordpress change takes the P instead of the DIV so if your markup shows div, then switch the p for the div, it should work.

    Also I am trying to figure out how to add automatically likes and comments options, any ideas? Thanks



    Sigh… I need help with this too.

    im back! so I figured it out how to work with the captions but Im having some trouble again with shortcodes, with earlier versions the code was translated to <> tags, now it keeps as [] so its more difficult to translate since FBIA takes the []shortcodes as text and I cant figure out how to properly define the selector, this is my case:

    [tw_heading size="waves-shortcode" text="TITLE TEXT" weight="300" style="normal" position="center"][/tw_heading]

    <p>[tw_heading size=”waves-shortcode” text=”TITLE TEXT” weight=”300″ style=”normal” position=”center”][/tw_heading]</p>

    <p>[tw_heading size=”waves-shortcode” text=”TITLE TEXT” weight=”300″ style=”normal” position=”center”][/tw_heading]</p>

    so as you can see, the []tags are taken as text not as selectors, does anyone have any solution to this? 🙁

    Any updates to this? Also having shortcode issues. Theyre displaying as straight text.

Viewing 10 replies - 1 through 10 (of 10 total)
  • The topic ‘Correct Transformer rule for [caption] shortcode’ is closed to new replies.