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