首页 问答 正文

如何为WordPress插件添加自定义字段

注册会员 / 悠然自学 / 2023-06-12/ 浏览 136 次

为WordPress插件添加自定义字段可以通过add_meta_box()函数来实现。该函数会在指定的编辑页面上添加自定义的元框(meta box),可以在其中添加自定义字段。

示例代码:

// 添加自定义元框
function myplugin_add_meta_box() {
    add_meta_box( 
        'myplugin_meta_box', // 元框ID
        __( 'MyPlugin Meta Box', 'myplugin' ), // 元框标题
        'myplugin_meta_box_callback', // 回调函数
        'post', // 显示在哪个类型(文章)
        'normal', // 显示位置
        'default' // 优先级
    );
}
add_action( 'add_meta_boxes', 'myplugin_add_meta_box' );

// 元框的回调函数
function myplugin_meta_box_callback( $post ) {
    wp_nonce_field( 'myplugin_meta_box', 'myplugin_meta_box_nonce' );
    $value = get_post_meta( $post->ID, '_myplugin_meta_key', true );
    echo '<label for="myplugin_meta_field">' . __( 'My Custom Field', 'myplugin' ) . '</label>';
    echo '<input type="text" id="myplugin_meta_field" name="myplugin_meta_field" value="' . esc_attr( $value ) . '">';
}

// 保存自定义字段的值
function myplugin_save_meta_box_data( $post_id ) {
    if ( ! isset( $_POST['myplugin_meta_box_nonce'] ) ) {
        return;
    }
    if ( ! wp_verify_nonce( $_POST['myplugin_meta_box_nonce'], 'myplugin_meta_box' ) ) {
        return;
    }
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return;
    }
    if ( isset( $_POST['post_type'] ) && 'post' == $_POST['post_type'] ) {
        if ( ! current_user_can( 'edit_post', $post_id ) ) {
            return;
        }
    }
    $meta_key = '_myplugin_meta_key';
    $meta_value = sanitize_text_field( $_POST['myplugin_meta_field'] );
    update_post_meta( $post_id, $meta_key, $meta_value );
}
add_action( 'save_post', 'myplugin_save_meta_box_data' ); 

此示例中,我们为文章添加了一个自定义元框,其中包含一个自定义字段myplugin_meta_field。当用户编辑文章时,会显示该元框,在其中填入的自定义字段数据会被保存到数据库中。

该示例代码需要根据实际情况进行修改,如修改元框ID、元框标题、自定义字段名称等。

大家谈论
    我的见解