the_permalink_rss filter doesn’t work

the RSS feed of annuncistar.it isn’t valid because the “&” char is not allowed in RSS feeds.
In order to solve that issue I’ve added a WordPress filter in my functions.php file.

function mp_permalink($permalink) {
$url = str_replace("&", "&", $permalink);
return $url;
}

add_filter('the_permalink_rss', 'mp_permalink');

Unfortunately this function doesn’t work. What could the reason be?

Related posts

Leave a Reply

1 comment

  1. Your feed URL seems to have Google Analytics tracking variables (utm_source, etc.) appended to it. Normally, a WordPress feed URL looks as simple as (to take mine as an example):

    http://gothick.org.uk/feed
    

    However, with Analytics tracking variables, it looks something like this:

    http://gothick.org.uk/?utm_source=source&utm_medium=medium&utm_term=term&utm_content=content&utm_campaign=campaign
    

    So, I’m guessing that you have a plugin installed that is altering your feed URL to add these variables. Unfortunately, when it’s being embedded in your RSS feed as the feed source, the ampersands in the URL aren’t being escaped — I’d guess this is a bug in the plugin.

    I’d guess your filter isn’t being run after the plugin changes the original feed. Whether that’s because it’s being run earlier in the filter chain or because the analytics plugin is targeting the feed URL at a different level, I’m not sure.

    Either way, the solution will be to disable the analytics plugin, or at least the bit that alters the feed URL, or update it to a version that escapes the URL properly for use in the RSS feed XML.