RSS/Atom提要无效,“标签不匹配”错误

时间:2016-02-15 作者:oomlaut

我们很难让我们的提要在其中一个上进行验证Feed Validator 或者W3C Feed Validation Service.

当我输入任何公共URI时:

我收到了与不匹配标记相关的各种错误,通常是</channel> 文档末尾的结束标记,或</entry> 在帖子末尾添加标签。

我们正在使用自定义主题,但我不知道是否会有干扰。我需要转义内部HTML还是关闭其他内容?

1 个回复
最合适的回答,由SO网友:oomlaut 整理而成

仔细检查输出后,所有没有明确结束标记的元素都缺少自动结束符号,即。<content ... />;

由于某种原因functions.php 文件具有以下功能来“清理”HTML5的输出:

/**********************************************
REMOVE SELF-CLOSING TAGS && USER-HARDCODED TAGS
***********************************************/

if ( !is_admin() && ( ! defined(\'DOING_AJAX\') || ( defined(\'DOING_AJAX\') && ! DOING_AJAX ) ) ) {
    ob_start( \'html5_slash_fixer\' );
    add_action( \'shutdown\', \'html5_slash_fixer_flush\' );
}

function html5_slash_fixer( $buffer ) {
    $buffer = str_replace( \'<p id="top" />\', null, $buffer );
    $buffer = str_replace( \' />\', \'>\', $buffer );
    return $buffer;
}

function html5_slash_fixer_flush() {
    ob_end_flush();
}
所以我在html5_slash_fixer 用于确定当前查询是否用于提要的方法:is_feed (WordPress Codex)

function html5_slash_fixer( $buffer ) {
    $buffer = str_replace( \'<p id="top" />\', null, $buffer );
    if( !is_feed() ){
        $buffer = str_replace( \' />\', \'>\', $buffer );
    }
    return $buffer;
}
使用此修复程序,输出将仅通过警告进行验证。

相关推荐

通过htaccess进行XMLRPC过滤不起作用

我的网站托管在共享实例上。他们面临常规的xmlrpc DDoS。我尝试了几种缓解措施来阻止这些攻击:安装了dedicated extension 这将禁用xmlrpc在该实例上的所有托管wordpress站点上,通过htaccess阻止xmlrpc,使用两种不同的代码:<Files xmlrpc.php> order deny,allow deny from all </Files> 以及 RewriteRule ^xmlrpc\\.php$