函数文档

get_the_generator()

💡 云策文档标注

概述

get_the_generator() 函数用于生成 RSS、ATOM 等格式的生成器 XML 或注释。它根据请求的输出格式返回正确的生成器类型,并允许插件通过 'get_the_generator_$type' 过滤器进行过滤。

关键要点

  • 函数返回指定类型的生成器 HTML 内容,类型包括 html、xhtml、atom、rss2、rdf、comment、export。
  • 如果未提供类型参数,函数会根据当前过滤器(如 rss2_head、atom_head)自动推断类型。
  • 支持动态过滤器 get_the_generator_{$type},允许对特定生成器类型进行自定义修改。
  • 函数内部使用 switch 语句处理不同生成器类型的输出,例如 atom 类型返回 'WordPress',rss2 类型包含 WordPress 版本信息。

代码示例

function get_the_generator( $type = '' ) {
    if ( empty( $type ) ) {
        $current_filter = current_filter();
        if ( empty( $current_filter ) ) {
            return;
        }
        switch ( $current_filter ) {
            case 'rss2_head':
            case 'commentsrss2_head':
                $type = 'rss2';
                break;
            case 'rss_head':
            case 'opml_head':
                $type = 'comment';
                break;
            case 'rdf_header':
                $type = 'rdf';
                break;
            case 'atom_head':
            case 'comments_atom_head':
            case 'app_head':
                $type = 'atom';
                break;
        }
    }
    switch ( $type ) {
        case 'html':
            $gen = '';
            break;
        case 'xhtml':
            $gen = '';
            break;
        case 'atom':
            $gen = 'WordPress';
            break;
        case 'rss2':
            $gen = '' . sanitize_url( 'https://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) ) . '';
            break;
        case 'rdf':
            $gen = '';
            break;
        case 'comment':
            $gen = '';
            break;
        case 'export':
            $gen = '';
            break;
    }
    return apply_filters( "get_the_generator_{$type}", $gen, $type );
}

注意事项

  • 函数在 WordPress 2.5.0 版本中引入,是核心功能的一部分。
  • 相关函数包括 the_generator() 用于显示生成器,以及 current_filter()、get_bloginfo_rss() 等辅助函数。
  • 过滤器名称是动态的,例如 get_the_generator_atom,开发者可以利用这些钩子定制输出。

📄 原文内容

Creates the generator XML or Comment for RSS, ATOM, etc.

Description

Returns the correct generator type for the requested output format. Allows for a plugin to filter generators on an individual basis using the ‘get_the_generator_$type’ filter.

Parameters

$typestringrequired
The type of generator to return – (html|xhtml|atom|rss2|rdf|comment|export).

Return

string|void The HTML content for the generator.

Source

function get_the_generator( $type = '' ) {
	if ( empty( $type ) ) {

		$current_filter = current_filter();
		if ( empty( $current_filter ) ) {
			return;
		}

		switch ( $current_filter ) {
			case 'rss2_head':
			case 'commentsrss2_head':
				$type = 'rss2';
				break;
			case 'rss_head':
			case 'opml_head':
				$type = 'comment';
				break;
			case 'rdf_header':
				$type = 'rdf';
				break;
			case 'atom_head':
			case 'comments_atom_head':
			case 'app_head':
				$type = 'atom';
				break;
		}
	}

	switch ( $type ) {
		case 'html':
			$gen = '<meta name="generator" content="WordPress ' . esc_attr( get_bloginfo( 'version' ) ) . '">';
			break;
		case 'xhtml':
			$gen = '<meta name="generator" content="WordPress ' . esc_attr( get_bloginfo( 'version' ) ) . '" />';
			break;
		case 'atom':
			$gen = '<generator uri="https://wordpress.org/" version="' . esc_attr( get_bloginfo_rss( 'version' ) ) . '">WordPress</generator>';
			break;
		case 'rss2':
			$gen = '<generator>' . sanitize_url( 'https://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) ) . '</generator>';
			break;
		case 'rdf':
			$gen = '<admin:generatorAgent rdf:resource="' . sanitize_url( 'https://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) ) . '" />';
			break;
		case 'comment':
			$gen = '<!-- generator="WordPress/' . esc_attr( get_bloginfo( 'version' ) ) . '" -->';
			break;
		case 'export':
			$gen = '<!-- generator="WordPress/' . esc_attr( get_bloginfo_rss( 'version' ) ) . '" created="' . gmdate( 'Y-m-d H:i' ) . '" -->';
			break;
	}

	/**
	 * Filters the HTML for the retrieved generator type.
	 *
	 * The dynamic portion of the hook name, `$type`, refers to the generator type.
	 *
	 * Possible hook names include:
	 *
	 *  - `get_the_generator_atom`
	 *  - `get_the_generator_comment`
	 *  - `get_the_generator_export`
	 *  - `get_the_generator_html`
	 *  - `get_the_generator_rdf`
	 *  - `get_the_generator_rss2`
	 *  - `get_the_generator_xhtml`
	 *
	 * @since 2.5.0
	 *
	 * @param string $gen  The HTML markup output to wp_head().
	 * @param string $type The type of generator. Accepts 'html', 'xhtml', 'atom',
	 *                     'rss2', 'rdf', 'comment', 'export'.
	 */
	return apply_filters( "get_the_generator_{$type}", $gen, $type );
}

Hooks

apply_filters( “get_the_generator_{$type}”, string $gen, string $type )

Filters the HTML for the retrieved generator type.

Changelog

Version Description
2.5.0 Introduced.