元数据 Metadata

概述

Metadata API 允许我们向 WordPress 中存储任何类型的数据。这个 API 可以让我们为文章、页面、分类目录等 WordPress 实体添加任何以 Key/Value 形式存储的元数据。

添加 Metadata

添加 Metadata 是一种为文章、页面和自定义类型添加更多信息的好方法。在 WordPress 中,元数据可以添加到多种类型的实体中。下面是一些具体的例子:

  • 给文章添加元数据
// 在保存文章时,保存 metadata 
function save_article_meta_data( $post_id ) {
    if ( isset( $_POST['article_location'] ) ) {
        update_post_meta(
            $post_id,
            'article_location',
            sanatize_text_field( $_POST['article_location'] )
        );
    }
}

add_action( 'save_post_article', 'save_article_meta_data' );

// 在展示文章时,获取 metadata 
$location = get_post_meta( $post->ID, 'article_location', true );
if ( $location ) {
    echo '<p>文章位置:' . $location . '</p>';
}
  • 给用户添加元数据
// 在用户注册时保存 metadata 
function set_user_meta_data( $user_id ) {
    if ( isset( $_POST['user_function'] ) ) {
        update_user_meta(
            $user_id,
            'user_function',
            sanitize_text_field( $_POST['user_function'] )
        );
    }
}

add_action( 'user_register', 'set_user_meta_data' );

// 在展示用户信息时获取 metadata 
$user_function = get_user_meta( $user_id, 'user_function', true );
if ( $user_function ) {
    echo '<p>用户职能:' . $user_function . '</p>';
}

获取 Metadata

获取 metadata 是从 WordPress 中检索信息得到的。我们可以使用许多函数来获取 metadata。下面是一些有用的函数:

// 获取某篇文章的 meta 值
$location = get_post_meta( $post->ID, 'article_location', true );

// 获取某个分类目录的 meta 值
$description = get_term_meta( $category_id, 'description', true );

// 获取某个用户的 meta 值
$user_function = get_user_meta( $user_id, 'user_function', true );

更新 Metadata

有时候,我们需要修改某些存储在 WordPress 中的 metadata 数据:

// 更新某篇文章的 meta
update_post_meta( $post->ID, 'article_location', 'New Location' );

// 更新某个分类目录的 meta
update_term_meta( $category_id, 'description', 'New Description' );

// 更新某个用户的 meta
update_user_meta( $user_id, 'user_function', 'New Function' );

删除 Metadata

与更新 metadata 类似,我们需要删除 metadata 时也可以使用一些 API 中提供的函数:

// 删除某篇文章的 meta
delete_post_meta( $post->ID, 'article_location' );

// 删除某个分类目录的 meta
delete_term_meta( $category_id, 'description' );

// 删除某个用户的 meta
delete_user_meta( $user_id, 'user_function' );

这就是如何使用 WordPress Metadata API。这个 API 允许开发者在 WordPress 中存储和检索任何主题相关的数据。无论你是在开发自己的主题还是插件,Metadata API 都是非常有用的,可以帮助你在 WordPress 中存储和检索特定类型的数据。

功能参考

添加/删除元数据:

获取/更新元数据:

数据库要求

此函数假定存在您指定的专用 MySQL 表$meta_type。一些所需的表格$meta_types没有预装的 WordPress 表格,因此必须手动创建。

默认元数据表

假设前缀为 wp_,WordPress 包含的元数据表是:

  • wp_commentmeta:特定评论的元数据。
  • wp_postmeta:页面、帖子和所有其他帖子类型的元数据。
  • wp_usermeta:用户的元数据。

元数据表结构

要存储上述表列表中未包含的元类型的数据,需要创建一个新表。所有元数据表都需要四列。

  • meta_id – BIGINT(20):无符号、auto_increment、非空、主键。

  • object_id– BIGINT(20):无符号,不为空。将object
    替换  为正在使用的内容类型的单数名称。例如,此列可能被命名为 post_id 或 term_id。尽管此列像外键一样使用,但不应将其定义为一个。

  • meta_key– VARCHAR(255):自定义元数据的键。

  • meta_value– LONGTEXT:自定义元数据的值。

源文件

元数据 API 位于 wp-includes/meta.php.