Support » Plugin: Post Snippets » [Plugin: Post Snippets] Mangles URLs containing ampersands

  • Resolved mettadas

    (@mettadas)



    This looks like a terrific plugin, but its usefulness to me is greatly diminished by its mangling of urls that contain ampersands. For example, I’d love to use this snippet to link to ebay auctions:

    <a href="http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item={ID}&ssPageName=STRK:MESELX:IT" rel="nofollow" target="_blank">{Text}</a>

    But switching to html view in the editor I can see that each & has been replaced by “&”, which breaks the url.

    I see I’m not the first person to mention this. It seems to me that html entities entered into the box that pops up asking for {ID} and {Text” values should be converted, but the snippet itself should be inserted *exactly* as entered.

    Any chance of a fix?

    http://wordpress.org/extend/plugins/post-snippets/

Viewing 7 replies - 1 through 7 (of 7 total)
  • Wish this forum had a preview … I wasn’t sure if my html would be interpreted or not. It was.

    What I tried to say above is that an ampersand will be replaced by {ampersand}amp;, which breaks the URL.

    Hi,

    Using (&)amp; in urls instead of & is actually the correct way to write url using & in html. Are you sure the url breaks when using it?

    No, it is not, when you want to use it to separate GET parameters. The correct format is

    http://example.com/path/to/page?param1=value1&param2=value2&param3=value3

    Look in your browser at any url that includes GET parameters. You will never see this:

    http://example.com/path/to/page?param1=value1&param2=value2&param3=value3

    But this plugin turns the first, correct form into the mangled second form.

    Damn. The forum software ate my example even in a CODE block. The second line should read (sort of)

    http://example.com/path/to/page?param1=value1(ampersand)amp;param2=value2(ampersand)amp;param3=value3

    with (ampersand) replaced by an actual ampersand. My point is that the amp; should not be there.

    And more generally, if the plugin is inserting HTML that I have configured it to insert, why would it not insert it exactly as I’ve asked it to? I can see the point of encoding values that the user entered into the pop up form, but surely the configured code should be left as entered, no?

    Yes, that is correct behaviour. The browser displays it as & even though it says &)amp; in the html code. If you write & directly in the html code the page won’t validate without errors, so in the html code all & needs to be &)amp;
    You can try that by writing &)amp; in the code and you will see that it displays correctly and validates correctly.

    If you still for some reason really want & directly in your html you can’t insert it in the WordPress’ editor, because when the snippet is inserted into the editor, the plugin has no control over it anymore, and WP from that point does (correctly) convert all & into &)amp; for text and links with query strings containing parameters.

    So you’d in that case need to insert it as a shortcode so WordPress editor doesn’t get a chance to touch it and then filter out the ampersand.

    But I can’t change the plugin to use & instead of &)amp; because that would make invalid xhtml/html5 for all people using it to insert links with query strings, ie. link.php?var=something&var2=somethingselse. There it has to be ampersandamp; spelled out for validity.

    See:
    http://www.w3.org/TR/xhtml1/guidelines.html#C_12

    To quote the relevant part…
    script that takes parameters, it must be expressed as:
    http://my.site.dom/cgi-bin/myscript.pl?class=guest(&)amp;name=user
    rather than as:
    http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user.

    Oh, so I don’t have misunderstood you, you are referring to use the snippet output ending up in HTML, right?
    Not to access it from PHP with the new get_post_snippet() functionality?

    You understood correctly, and it seems I have learned something. I’ve never seen (ampersand)amp; in an url before and in many years of coding have never generated such an url. But it seems to work. I guess this changed with xhtml?

Viewing 7 replies - 1 through 7 (of 7 total)
  • The topic ‘[Plugin: Post Snippets] Mangles URLs containing ampersands’ is closed to new replies.