
get_plugin_data ( $plugin_file, $markup = true, $translate = true )
get_plugin_data函数是一个WordPress函数,用于检索一个插件的元数据: 这个函数接受一个参数,即你想检索元数据的插件文件的路径: 该函数返回一个指定插件的元数据数组,包括名称、版本、作者和其他信息。
对插件的内容进行解析,以检索插件的元数据。
所有插件的标题必须在自己的行上。插件描述不能有任何新行,否则将只显示部分描述。下面的内容是打印用的格式。
/*
Plugin Name: Name of the plugin.
Plugin URI: The home page of the plugin.
Description: Plugin description.
Author: Plugin author’s name.
Author URI: Link to the author’s website.
Version: Plugin version.
Text Domain: Optional. Unique identifier, should be same as the one used in load_plugin_textdomain().
Domain Path: Optional. Only useful if the translations are located in a folder above the plugin’s base path. For example, if .mo files are located in the locale folder then Domain Path will be”/locale/” and must have the first slash. Defaults to the base folder the plugin is located in.
Network: Optional. Specify”Network: true” to require that a plugin is activated across all sites in an installation. This will prevent a plugin from being activated on a single site when Multisite is enabled.
Requires at least: Optional. Specify the minimum required WordPress version.
Requires PHP: Optional. Specify the minimum required PHP version.
* / # Remove the space to close comment.
文件的前8KB将被拉入,如果插件数据不在这前8KB内,那么插件作者应该修正他们的插件,并将插件数据头移到顶部。
插件文件被认为具有允许脚本读取该文件的权限。然而,这一点并没有被检查,该文件只被打开用于阅读。
function get_plugin_data( $plugin_file, $markup = true, $translate = true ) { $default_headers = array( 'Name' => 'Plugin Name', 'PluginURI' => 'Plugin URI', 'Version' => 'Version', 'Description' => 'Description', 'Author' => 'Author', 'AuthorURI' => 'Author URI', 'TextDomain' => 'Text Domain', 'DomainPath' => 'Domain Path', 'Network' => 'Network', 'RequiresWP' => 'Requires at least', 'RequiresPHP' => 'Requires PHP', 'UpdateURI' => 'Update URI', // Site Wide Only is deprecated in favor of Network. '_sitewide' => 'Site Wide Only', ); $plugin_data = get_file_data( $plugin_file, $default_headers, 'plugin' ); // Site Wide Only is the old header for Network. if ( ! $plugin_data['Network'] && $plugin_data['_sitewide'] ) { /* translators: 1: Site Wide Only: true, 2: Network: true */ _deprecated_argument( __FUNCTION__, '3.0.0', sprintf( __( 'The %1$s plugin header is deprecated. Use %2$s instead.' ), '<code>Site Wide Only: true</code>', '<code>Network: true</code>' ) ); $plugin_data['Network'] = $plugin_data['_sitewide']; } $plugin_data['Network'] = ( 'true' === strtolower( $plugin_data['Network'] ) ); unset( $plugin_data['_sitewide'] ); // If no text domain is defined fall back to the plugin slug. if ( ! $plugin_data['TextDomain'] ) { $plugin_slug = dirname( plugin_basename( $plugin_file ) ); if ( '.' !== $plugin_slug && false === strpos( $plugin_slug, '/' ) ) { $plugin_data['TextDomain'] = $plugin_slug; } } if ( $markup || $translate ) { $plugin_data = _get_plugin_data_markup_translate( $plugin_file, $plugin_data, $markup, $translate ); } else { $plugin_data['Title'] = $plugin_data['Name']; $plugin_data['AuthorName'] = $plugin_data['Author']; } return $plugin_data; }