欢迎访问宙启技术站
智能推送

WordPress中如何编写自定义存储字段

发布时间:2023-05-18 04:33:49

WordPress是一个灵活的内容管理系统,它允许用户创建新的存储字段来扩展现有的数据模型。这样可以使我们在文章中添加额外的信息,比如作者、发布日期、文章分类、标签和文章摘要。在这篇文章中,我们将教您如何编写自定义存储字段。

## 了解WordPress存储

在开始编写自定义存储字段之前,我们需要了解WordPress如何存储数据。WordPress使用MySQL数据库来存储所有的数据。有两张表存储文章相关的数据:wp_posts 和 wp_postmeta。Wp_posts表存储文章的基本信息,例如标题、内容、发布日期等;而wp_postmeta表存储自定义元数据,比如文章摘要、作者、分类等。Wp_postmeta表包含四个字段:meta_id、post_id、meta_key 和 meta_value。其中meta_id是一个自增的整数,post_id是文章的ID号,meta_key是自定义字段的名称,而meta_value是自定义字段的值。

## 编写自定义存储字段的步骤

以下是编写自定义存储字段的步骤:

1. 在你的主题或插件的functions.php文件中添加以下代码来创建自定义存储字段。

function custom_meta() {
    add_meta_box('custom_meta_box', //这是元数据框的ID号,你可以自己定义
    'Custom Meta Box', //这是元数据框的标题,你可以自己定义
    'custom_meta_callback', //这是回调函数的名称,你需要自己定义
    'post', //这是你想要添加该自定义字段的文章类型,你可以自己定义
    'normal', //这是元数据框的位置,你可以自己定义,有三个位置:normal  side或advanced
    'high');//这仅是元数据框中字段的优先级,你可以自己定义,有三个值:high、core、default和low。
}
add_action('add_meta_boxes', 'custom_meta');

2. 现在,我们将创建回调函数来存储我们的自定义字段。回调函数必须具有三个参数:$post、$metabox 和 $fields。$post是当前文章的对象,$metabox是元数据框的对象,$fields是元数据框中包含的所有字段的数组。在回调函数中,我们将存储我们的自定义字段值。

function custom_meta_callback($post, $metabox) {
    wp_nonce_field(basename(__FILE__), 'custom_meta_nonce');
    $value = get_post_meta($post->ID, '_custom_meta', true);
    echo '<label for="_custom_meta">Custom Meta</label>';
    echo '<input type="text" id="_custom_meta" name="_custom_meta" value="' . esc_attr($value) . '">';
}

3. 接下来,我们将创建一个保存自定义字段值的回调函数。该函数将钩子'do_action('save_post', $post_id, $post, $update)'与'wp_insert_post_data'过滤器配对。我们将在其内部检查是否在提交表单时发送了正确的安全性验证。我们还将检查用户是否有权限更新文章。最后,我们将使用update_post_meta()函数将自定义字段值存储到wp_postmeta表中。

function save_custom_meta($post_id) {
    if (!isset($_POST['custom_meta_nonce']) || !wp_verify_nonce($_POST['custom_meta_nonce'], basename(__FILE__)))
    return $post_id;
    $post_type = get_post_type($post_id);
    if ('page' == $post_type) {
    if (!current_user_can('edit_page', $post_id))
        return $post_id;
    } else {
    if (!current_user_can('edit_post', $post_id))
        return $post_id;
    }
    $meta_key = '_custom_meta';
    $meta_value = sanitize_text_field($_POST['_custom_meta']);
    update_post_meta($post_id, $meta_key, $meta_value);
}
add_action('save_post', 'save_custom_meta');
add_filter('wp_insert_post_data', 'save_custom_meta');

至此,我们完成了编写自定义保存字段的步骤。

## 总结

在这篇文章中,我们通过建立三个回调函数来学习了如何编写自定义存储字段。如果您想添加其他字段,您可以使用类似的方式来编写。请注意,这些字段只对已经创建的文章有影响,不会对后续文章的创建产生影响。因此,如果您希望新文章也具有相同的字段,您需要通过插件或修改WordPress核心来实现。