WordPress自定义字段

在WordPress中,可以使用自定义字段(meta fields)来存储额外的信息。以下是如何使用PHP函数get_post_meta()来获取和显示自定义字段的例子:

首先,确保你有一个自定义字段键(key)。例如,如果你添加了一个名为_my_custom_field的自定义字段,你可以这样获取和显示它的值:

// 假设你已经有了一个WordPress $post对象
$post_id = $post->ID; // 获取文章ID
 
// 获取自定义字段的值
$custom_field_value = get_post_meta($post_id, '_my_custom_field', true);
 
// 显示自定义字段的值
echo $custom_field_value;

如果你想在WordPress的后台编辑页面上添加自定义字段,你可以使用add_meta_box()函数。以下是一个添加自定义字段的例子:

复制下面的代码到 wordpress 主题的 functions.php 文件中。

function add_custom_field_metabox() {
    add_meta_box('my_custom_field_metabox', 'My Custom Field', 'render_custom_field_metabox', 'post', 'normal', 'high');
}
add_action('add_meta_boxes', 'add_custom_field_metabox');
 
function render_custom_field_metabox($post) {
    // 非持久化非公开输出
    wp_nonce_field('my_custom_field_nonce', 'my_custom_field_nonce');
    
    // 获取现有的自定义字段值
    $value = get_post_meta($post->ID, '_my_custom_field', true);
    ?>
    <label for="my_custom_field">My Custom Field</label>
    <input type="text" name="my_custom_field" id="my_custom_field" value="<?php echo esc_attr($value); ?>">
    <?php
}
 
function save_custom_field_metabox($post_id) {
    // 安全检查
    if (!isset($_POST['my_custom_field_nonce']) || !wp_verify_nonce($_POST['my_custom_field_nonce'], 'my_custom_field_nonce')) {
        return;
    }
 
    // 确保用户有权限保存数据
    if (!current_user_can('edit_post', $post_id)) {
        return;
    }
 
    // 读取数据并保存
    $data = sanitize_text_field($_POST['my_custom_field']);
    update_post_meta($post_id, '_my_custom_field', $data);
}
add_action('save_post', 'save_custom_field_metabox');

这段代码将会添加一个名为“My Custom Field”的自定义字段到所有帖子的后台编辑页面,并且能够保存和检索这个字段的值。