get_feed_link()
云策文档标注
概述
get_feed_link() 函数用于获取指定类型的 feed 永久链接,支持 RSS2、Atom 等格式。它根据 WordPress 的 permalink 结构或查询参数生成链接,并可通过过滤器进行自定义。
关键要点
- 函数返回 feed 类型的永久链接,参数 $feed 可选,默认使用 get_default_feed() 的值。
- 支持 'rss2'、'atom' 等 feed 类型,以及评论 feed(如 'comments_rss2')。
- 内部逻辑基于 $wp_rewrite 对象处理 permalink 结构,或回退到查询字符串方式。
- 输出可通过 'feed_link' 过滤器进行修改,允许开发者自定义链接生成。
代码示例
// 获取默认 feed 链接
$default_feed_link = get_feed_link();
// 获取 RSS2 feed 链接
$rss2_feed_link = get_feed_link('rss2');
// 获取评论 RSS2 feed 链接
$comments_rss2_feed_link = get_feed_link('comments_rss2');注意事项
- 确保 permalink 结构已正确设置,否则函数可能回退到查询参数模式。
- 使用过滤器 'feed_link' 时,注意参数顺序:$output 为链接字符串,$feed 为 feed 类型。
原文内容
Retrieves the permalink for the feed type.
Parameters
$feedstringoptional-
Feed type. Possible values include
'rss2','atom'.
Default is the value of get_default_feed() .
Source
function get_feed_link( $feed = '' ) {
global $wp_rewrite;
$permalink = $wp_rewrite->get_feed_permastruct();
if ( $permalink ) {
if ( str_contains( $feed, 'comments_' ) ) {
$feed = str_replace( 'comments_', '', $feed );
$permalink = $wp_rewrite->get_comment_feed_permastruct();
}
if ( get_default_feed() === $feed ) {
$feed = '';
}
$permalink = str_replace( '%feed%', $feed, $permalink );
$permalink = preg_replace( '#/+#', '/', "/$permalink" );
$output = home_url( user_trailingslashit( $permalink, 'feed' ) );
} else {
if ( empty( $feed ) ) {
$feed = get_default_feed();
}
if ( str_contains( $feed, 'comments_' ) ) {
$feed = str_replace( 'comments_', 'comments-', $feed );
}
$output = home_url( "?feed={$feed}" );
}
/**
* Filters the feed type permalink.
*
* @since 1.5.0
*
* @param string $output The feed permalink.
* @param string $feed The feed type. Possible values include 'rss2', 'atom',
* or an empty string for the default feed type.
*/
return apply_filters( 'feed_link', $output, $feed );
}
Hooks
- apply_filters( ‘feed_link’, string $output, string $feed )
-
Filters the feed type permalink.
Changelog
| Version | Description |
|---|---|
| 1.5.0 | Introduced. |