📜  将图像保存到自定义元框 - PHP (1)

📅  最后修改于: 2023-12-03 14:53:48.724000             🧑  作者: Mango

将图像保存到自定义元框 - PHP

在开发网站时,经常需要上传和处理图像。其中一种需求是将图像保存到自定义元框,这可以让我们更轻松地管理和展示图片。在PHP中,我们可以使用WordPress提供的函数来实现这个目的。在本文中,我们将介绍如何将图像保存到自定义元框。

第一步:创建自定义元框

首先,我们需要为图像创建一个自定义元框。这可以使用WordPress的add_meta_box函数。该函数将自定义的HTML元素添加到编辑帖子/页面的右侧,允许用户上传图像并将其保存为元框。

function custom_image_meta_box() {
    add_meta_box(
        'custom_image_box', // 这是元框的ID
        'Custom Image', // 这是元框的标题
        'custom_image_display', // 这是元框的内容
        'post', // 应用于哪种帖子类型
        'normal', // 元框的位置,可以是'normal', 'side'或'advanced'
        'core' // 这告诉WordPress这是一个核心元框
    );
}
add_action('add_meta_boxes', 'custom_image_meta_box');

function custom_image_display() {
    // 显示自定义元框的HTML
    // 可以包含一个<input type="file">,允许用户上传图像。
    // 还需要一个隐藏的<input>元素,将图像的URL保存为元框值。
}

这是一个基本的代码,用于为“post”类型的帖子创建一个名为“Custom Image”的元框,并在元框内容中添加一些HTML。

第二步:处理上传的图像

一旦用户上传了图像,我们需要将其处理并将其URL保存到元框的值中。我们可以使用WordPress的wp_handle_upload函数来处理上传的图像,这个函数会将图像移动到WordPress的媒体库中,我们可以使用它的返回值来获取图像的URL。

function custom_image_handle_upload ($file_handler) {
    // 处理上传的文件并将其保存到WordPress媒体库中
    $upload_overrides = array( 'test_form' => false );
    $uploaded_file = wp_handle_upload( $file_handler, $upload_overrides );

    if ( isset( $uploaded_file['error'] ) ) {
        echo "上传失败:" . $uploaded_file['error'];
    } else {
        return $uploaded_file['url'];
    }
}

在上传完图像后,我们需要将图像URL保存到我们为图像创建的自定义元框中。这可以使用WordPress的update_post_meta函数。

function custom_image_save_meta_box() {
    $post_id = get_the_ID();
    if (isset($_POST['custom_image_url'])) {
        update_post_meta($post_id, '_custom_image_url', $_POST['custom_image_url']);
    }
}
add_action('save_post', 'custom_image_save_meta_box');

这是将图像URL保存到自定义元框中的一个代码。我们使用POST请求获取表单数据,将图像URL保存到名为'_custom_image_url'的自定义元框中。

第三步:显示保存的图像

最后,我们需要显示在自定义元框中保存的图像。这可以使用我们在上面介绍过的'_custom_image_url'元框值,并将其作为IMG标记的src属性中的值。

function custom_image_display() {
    $post_id = get_the_ID();
    $custom_image_url = get_post_meta($post_id, '_custom_image_url', true);
    ?>
    <input type="file" id="custom_image" name="custom_image" />
    <input type="hidden" id="custom_image_url" name="custom_image_url" value="<?php echo $custom_image_url; ?>" />
    <?php
    if (!empty($custom_image_url)) {
        echo '<img src="' . $custom_image_url . '" />';
    }
}

这是一个基本的代码,用于在自定义元框中显示图像。我们使用'get_post_meta'函数获取'_custom_image_url'元框值,并将其存储到$custom_image_url变量中。接下来,我们在自定义元框中添加一个隐藏的INPUT元素,将$custom_image_url作为值,并在有URL的情况下显示图像。

现在,当用户上传图像并保存文章时,图像将保存到'_custom_image_url'元框中,并显示在自定义元框中。请注意,我们还需要进行一些额外的代码来确保上传的图像已正确处理和存储,并能够在没有错误的情况下正确显示。