函数文档

is_protected_meta()

💡 云策文档标注

概述

is_protected_meta() 函数用于判断一个元数据键是否被视为受保护的。它基于键名是否以下划线开头来定义保护状态,并可通过过滤器进行自定义。

关键要点

  • 函数接受两个参数:必需的 $meta_key(元数据键)和可选的 $meta_type(元数据类型,如 'post'、'user' 等)。
  • 返回布尔值,表示元数据键是否受保护。
  • 保护逻辑:去除非 ASCII 字符后,如果键名以 '_' 开头,则视为受保护。
  • 提供 'is_protected_meta' 过滤器,允许开发者修改保护判断结果。

代码示例

function is_protected_meta( $meta_key, $meta_type = '' ) {
    $sanitized_key = preg_replace( "/[^x20-x7Ep{L}]/", '', $meta_key );
    $protected     = strlen( $sanitized_key ) > 0 && ( '_' === $sanitized_key[0] );

    return apply_filters( 'is_protected_meta', $protected, $meta_key, $meta_type );
}

注意事项

  • 元数据类型参数 $meta_type 是可选的,默认空字符串,支持 'blog'、'post'、'comment'、'term'、'user' 等类型。
  • 函数自 WordPress 3.1.3 版本引入,常用于自定义字段管理、权限映射等场景。

📄 原文内容

Determines whether a meta key is considered protected.

Parameters

$meta_keystringrequired
Metadata key.
$meta_typestringoptional
Type of object metadata is for. Accepts 'blog', 'post', 'comment', 'term', 'user', or any other object type with an associated meta table. Default empty string.

Return

bool Whether the meta key is considered protected.

Source

function is_protected_meta( $meta_key, $meta_type = '' ) {
	$sanitized_key = preg_replace( "/[^x20-x7Ep{L}]/", '', $meta_key );
	$protected     = strlen( $sanitized_key ) > 0 && ( '_' === $sanitized_key[0] );

	/**
	 * Filters whether a meta key is considered protected.
	 *
	 * @since 3.2.0
	 *
	 * @param bool   $protected Whether the key is considered protected.
	 * @param string $meta_key  Metadata key.
	 * @param string $meta_type Type of object metadata is for. Accepts 'blog', 'post', 'comment', 'term',
	 *                          'user', or any other object type with an associated meta table.
	 */
	return apply_filters( 'is_protected_meta', $protected, $meta_key, $meta_type );
}

Hooks

apply_filters( ‘is_protected_meta’, bool $protected, string $meta_key, string $meta_type )

Filters whether a meta key is considered protected.

Changelog

Version Description
3.1.3 Introduced.