Add ![CDATA] to permalink rss

时间:2016-09-04 作者:Panos

在添加的下一部分中![CDATA]通过下面的链接可以看到标题标签

WordPress Add [cdata] to title tag in rss feed

现在我正在尝试添加![CDATA]使用链接标签the_permalink_rss这是我目前掌握的代码:

//Add cdata to job permalink rss
add_filter( \'the_permalink_rss\', \'add_cdata_to_permalink\' );

function add_cdata_to_permalink ( $permalink) {
       $permalink = get_post_type_archive_link( get_query_var(\'job_listing\') );
       return \'<![CDATA[\' . $permalink . \']]>\';
这是输出<link>http://![CDATA[]]</link>应该是什么时候

<link><![CDATA[permalink]]></link>

我错过了什么?

1 个回复
SO网友:cybmeta

问题及其解决方案与other question. 您正在使用get_post_type_archive_link() 不正确。该函数只接受一个参数,它是post type identifier 我几乎可以肯定的是get_query_var(\'job_listing\') 不返回post类型标识符。

例如,如果职位类型为job_listing, 使用get_post_type_archive_link() 应为:

$permalink = get_post_type_archive_link( \'job_listing\' );
请注意get_post_type_archive_link() 退货false 如果职位类型注册于\'has_archive\' => false 或者,如果post类型标识符无效,您的cse是什么。

此外,还要考虑the_permalink_rss 滤器is escaped using esc_url(), 正如您在source code of the_permalink_rss() funciton,, 因此,您可能无法获得所需的结果,因为我认为,该函数试图转义一个有效的URL,而不是以<!CDATA 不是有效的URL。您可以执行这个简单的测试来了解我的意思:

$test = \'<![CDATA[ https://example.com/some-post ]]>\';
// Outputs string(0) ""
var_dump( esc_url( $test ) );

$test = \'https://example.com/some-post\';
string(29) "https://example.com/some-post"
var_dump( esc_url( $test ) );