1. 首页
  2. WordPress 函数手册

get_plugin_data()

get_plugin_data( string $plugin_file, bool $markup = true, bool $translate = true )

分析插件内容以检索插件的元数据。
Parses the plugin contents to retrieve plugin’s metadata.

目录锚点:#说明#参数#返回#源码


说明(Description)

所有插件头必须在自己的行上。插件描述不能有任何换行符,否则只显示部分描述。下面是打印格式。

/*

插件名称:插件的名称。

插件URI:插件的主页。

描述:插件描述。

作者:插件作者的名字。

作者URI:指向作者网站的链接。

版本:插件版本。

文本域:可选。唯一标识符,应与中使用的标识符相同

加载插件文本域()。

域路径:可选。只有当翻译位于

位于插件基本路径上方的文件夹。例如,如果.mo文件是

位于区域设置文件夹中,则域路径为“/locale/”,并且

必须有第一个斜杠。默认为插件的基本文件夹

位于。

网络:可选。指定“Network:true”以要求激活插件

安装中的所有站点。这将阻止插件

启用多站点时在单个站点上激活。

至少需要:可选。指定所需的最低WordPress版本。

需要PHP:可选。指定所需的最低PHP版本。

*/#删除空格以关闭注释。

文件的前8kb将被拉入,如果插件数据不在前8kb内,那么插件作者应该更正他们的插件并将插件数据头移到顶部。

假定插件文件具有允许脚本读取该文件的权限。但是,不会选中此选项,并且文件仅为读取而打开。


参数(Parameters)

参数 类型 必填 说明
$plugin_file (string) 必需 主插件文件的绝对路径。
$markup (bool) 可选 如果返回的数据应该应用HTML标记。
$translate (bool) 可选 是否应转换返回的数据。

返回(Return)

(array) Plugin data. Values will be empty if not supplied by the plugin.

‘Name’
(string) Name of the plugin. Should be unique.
‘Title’
(string) Title of the plugin and link to the plugin’s site (if set).
‘Description’
(string) Plugin description.
‘Author’
(string) Author’s name.
‘AuthorURI’
(string) Author’s website address (if set).
‘Version’
(string) Plugin version.
‘TextDomain’
(string) Plugin textdomain.
‘DomainPath’
(string) Plugins relative directory path to .mo files.
‘Network’
(bool) Whether the plugin can only be activated network-wide.
‘RequiresWP’
(string) Minimum required version of WordPress.
‘RequiresPHP’
(string) Minimum required version of PHP.


源码(Source)

/**
 * Parse the plugin contents to retrieve plugin's metadata.
 *
 * The metadata of the plugin's data searches for the following in the plugin's
 * header. All plugin data must be on its own line. For plugin description, it
 * must not have any newlines or only parts of the description will be displayed
 * and the same goes for the plugin data. The below is formatted for printing.
 *
 *     /*
 *     Plugin Name: Name of Plugin
 *     Plugin URI: Link to plugin information
 *     Description: Plugin Description
 *     Author: Plugin author's name
 *     Author URI: Link to the author's web site
 *     Version: Must be set in the plugin for WordPress 2.3+
 *     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.
 *      * / # Remove the space to close comment
 *
 * Plugin data returned array contains the following:
 *
 * - 'Name' - Name of the plugin, must be unique.
 * - 'Title' - Title of the plugin and the link to the plugin's web site.
 * - 'Description' - Description of what the plugin does and/or notes
 * - from the author.
 * - 'Author' - The author's name
 * - 'AuthorURI' - The authors web site address.
 * - 'Version' - The plugin version number.
 * - 'PluginURI' - Plugin web site address.
 * - 'TextDomain' - Plugin's text domain for localization.
 * - 'DomainPath' - Plugin's relative directory path to .mo files.
 * - 'Network' - Boolean. Whether the plugin can only be activated network wide.
 *
 * Some users have issues with opening large files and manipulating the contents
 * for want is usually the first 1kiB or 2kiB. This function stops pulling in
 * the plugin contents when it has all of the required plugin data.
 *
 * The first 8kiB of the file will be pulled in and if the plugin data is not
 * within that first 8kiB, then the plugin author should correct their plugin
 * and move the plugin data headers to the top.
 *
 * The plugin file is assumed to have permissions to allow for scripts to read
 * the file. This is not checked however and the file is only opened for
 * reading.
 *
 * @link https://core.trac.wordpress.org/ticket/5651 Previous Optimizations.
 * @link https://core.trac.wordpress.org/ticket/7372 Further and better Optimizations.
 *
 * @since 1.5.0
 *
 * @param string $plugin_file Path to the plugin file
 * @param bool $markup Optional. If the returned data should have HTML markup applied. Defaults to true.
 * @param bool $translate Optional. If the returned data should be translated. Defaults to true.
 * @return array See above for description.
 */
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',
		// 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'] ) {
		_deprecated_argument( __FUNCTION__, '3.0', sprintf( __( 'The %1$s plugin header is deprecated. Use %2$s instead.' ), 'Site Wide Only: true', 'Network: true' ) );
		$plugin_data['Network'] = $plugin_data['_sitewide'];
	}
	$plugin_data['Network'] = ( 'true' == strtolower( $plugin_data['Network'] ) );
	unset( $plugin_data['_sitewide'] );

	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;
}
更新版本 源码位置 使用 被使用
5.3.0 wp-admin/includes/plugin.php:68 10 5

get_plugin_data() 为WP2原创文章,链接:https://www.wp2.cn/functions/get_plugin_data/

发表评论

您的电子邮箱地址不会被公开。