xmlrsspodcast

WordPress Castos plugin: Seriously Simple Podcasting RSS validator issues. Errors in tags and namespace


Seriously Simple Podcasting (SSP) version 2.23.0 and earlier, have issues that are producing an RSS feed not validated by W3 Validator.

How to reproduce this issue

Take any RSS feed made with this WordPress plugin and this version 2.23.0, add it into the W3 validator:

https://validator.w3.org/

And it will return the errors here below are explained and for each one, there is a solution I posted.

Important note

This issue is highlighted by several users on their WordPress blog, but never really deeply tackled. I read claims even from 2019.

Because I had several podcasts from customers that were demoted from Google, I inquired it by asking to the Google Podcasts Support and they highlighted the not-conformity of the RSS Feeds against W3 Validator.

I asked to the support of the plugin, but all what I got is an answer like (in short): on our validator everything is fine. W3 Validator has some issue.

OK, but Google wants something else.

Here below the screenshots from the W3 Validator

Undefined Item Element: Image

Itunes:Explicit Must Be True Or False

Image Link Doesn't Match Channel Link

Use Of Unknown NameSpace


Solution

  • Here is how to solve these issues.

    Important

    All the corrections I suggest here, are referred to the version 2.23.0 of the plugin. EDIT: even in the last versione 3.1.1 the issue still present. It can change some line number but the solution to apply is identical Just go on all these settings to implement what original programmers still have not implemented yet

    Meanwhile

    Turn the AutoUpdates for this plugin: off (to avoid that any update can delete all what you did), by going into your WordPress Dashboard then

    Plugins > Installed Plugins > in the search filed type "ssp" (without quotes) and the Seriously Simple Podcasting will appear.

    On the last column click on Disable auto-updates as in the screenshot here below:

    Disable auto-update screenshot

    Solution - undefined item element: image

    Screenshot:

    Undefined Item Element: Image

    It's due the presence of the tag <image></image> that shouldn't be declared in any RSS ITEM dedicated to podcasting. It's admitted only in the header (<channel></channel>) of the RSS for the Podcast itself but not within the episodes' tag <item></item> as it is described here https://www.rssboard.org/rss-specification

    To remove the <image></image> tag, edit the file:

    /wp-content/plugins/seriously-simple-podcasting/templates/feed/feed-item.php

    Remove the lines 70, 71, 72 and 73 here below reported:

    <image>
        <url><?php echo esc_url( $episode_image ); ?></url>
        <title><?php echo esc_attr( $title ); ?></title>
    </image>
    

    these are only to show the artwork of each episode on the human readable website. The formatting is not allowed by W3 validator.

    To be able to show the artworks without breaking the validation, in the same file change the line 36. It is delivered as here below:

    <description><![CDATA[<?php echo $description; ?>]]></description>
    

    Remove it and paste this one below, instead:

    <description><![CDATA[ <?php echo '<img src="' . esc_url( $episode_image ) . '" />'; ?> <?php echo $description; ?>]]></description>
    

    Solution - Itunes:Explicit must be "true" or "false"

    Screenshot:

    Itunes:Explicit Must Be True Or False

    Within the tag itunes:explicit, Castos have declared clean and yes. Which doesn't like to the W3 Validator. To solve this, edit the file:

    /wp-content/plugins/seriously-simple-podcasting/php/classes/controllers/class-feed-controller.php

    Line 185 should be

        $itunes_explicit = $is_explicit ? 'true' : 'false'; // it was 'yes' : 'clean'
    

    Lines 300, 301, 302, 303, 304, 305, 306 should be in this way

        if ( $ep_explicit && $ep_explicit == 'on' ) {
            $itunes_explicit_flag     = 'true'; // it was YES
            $googleplay_explicit_flag = 'Yes';
        } else {
            $itunes_explicit_flag     = 'false'; // it was CLEAN
            $googleplay_explicit_flag = 'No';
        }
    

    Solution - image link doesn't match channel link

    Screenshot:

    Image Link Doesn't Match Channel Link

    It means that the link declared int o the header image, is not the link that leads to the podcast. Indeed it goes to the main URL domain of the site, but doesn't address the podcast with its episodes. The result is:

    <link>https://www.example.com/</link>

    instead of (here below just an example):

    <link>https://www.example.com/feed/allmypodcasts/my-specific-podcast</link>

    To correct this, edit the file:

    /wp-content/plugins/seriously-simple-podcasting/templates/feed-podcast.php

    Line 112 is delivered in the following way:

    <link><?php echo esc_url( apply_filters( 'ssp_feed_channel_link_tag', $home_url, $podcast_series ) ) ?></link>
    

    Change it into:

     <link><?php echo $feed_link ?></link>
    

    Note: the variable $feed_link is already filtered

    Here you are ready to go and you are validated


    Use of unknown namespace: http://www.google.com/schemas/play-podcasts/1.0

    Screenshot:

    Use Of Unknown Namespace

    This is unfortunate because this belongs to Google. I already highlighted this issue to the Google Podcasts Support but I didn't get any answer yet. When and if I will have a solution, I will be happy to edit this post and to add it.

    However, as I already anticipated, if you apply the first 3 corrections, you get validated. No matter about the 4th point for the time being.

    Conclusion

    All these mods are not negatively impacting any pre-existing podcasts and their episodes on any platform. The human readability of the RSS feed pages of your websites is fully kept.

    I hope Castos finally will provide an update to their plugin.

    I discovered CastosHD on GitHub so I pulled this request by myself, although it gave me the sensation that is a abandonware repository. However I tried.

    EDIT 2024/06/03: Castos programmers told they are not on GITLAB adn GITHUB is abandoned. So I opened a merge request on GitLab accordingly https://gitlab.com/castos/Seriously-Simple-Podcasting/-/merge_requests/1026

    till now: not any feedback. I hope in the future however my suggestion is: whenever you update the plugin make also all the above mods.