函数文档

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() .

Return

string The feed permalink.

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.