首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使post附件在save_post操作上可用?

在WordPress中,当我们在后台编辑文章并点击保存时,会触发save_post操作。然而,默认情况下,$_FILES数组中的附件信息在save_post操作中是不可用的。要使post附件在save_post操作上可用,我们可以使用以下方法:

  1. 首先,我们需要在文章编辑页面添加一个隐藏字段,用于存储附件的ID。可以使用add_meta_box函数来添加一个自定义的元框,将其放置在文章编辑页面的合适位置。在元框中,我们可以使用wp_nonce_field函数来生成一个安全的隐藏字段,并使用get_post_meta函数获取已上传附件的ID。
代码语言:php
复制
function add_attachment_meta_box() {
    add_meta_box(
        'attachment_meta_box',
        '附件',
        'render_attachment_meta_box',
        'post',
        'normal',
        'high'
    );
}

function render_attachment_meta_box($post) {
    wp_nonce_field('attachment_meta_box', 'attachment_meta_box_nonce');
    $attachment_id = get_post_meta($post->ID, 'attachment_id', true);
    // 在这里显示附件信息或上传附件的表单
}
add_action('add_meta_boxes', 'add_attachment_meta_box');
  1. 接下来,我们需要在save_post操作中处理附件。我们可以使用wp_handle_upload函数来处理上传的附件,并将其保存到服务器上。然后,我们可以将附件的ID保存到之前添加的隐藏字段中。
代码语言:php
复制
function save_attachment_meta_box($post_id) {
    if (!isset($_POST['attachment_meta_box_nonce']) || !wp_verify_nonce($_POST['attachment_meta_box_nonce'], 'attachment_meta_box')) {
        return;
    }
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }
    if (!current_user_can('edit_post', $post_id)) {
        return;
    }
    if (!isset($_FILES['attachment'])) {
        return;
    }
    $attachment = $_FILES['attachment'];
    $upload_overrides = array('test_form' => false);
    $movefile = wp_handle_upload($attachment, $upload_overrides);
    if ($movefile && !isset($movefile['error'])) {
        $attachment_id = wp_insert_attachment(array(
            'post_mime_type' => $movefile['type'],
            'post_title' => sanitize_file_name($attachment['name']),
            'post_content' => '',
            'post_status' => 'inherit'
        ), $movefile['file'], $post_id);
        if ($attachment_id) {
            update_post_meta($post_id, 'attachment_id', $attachment_id);
        }
    }
}
add_action('save_post', 'save_attachment_meta_box');

通过以上步骤,我们成功地将post附件在save_post操作上可用。在save_post操作中,我们处理了附件的上传和保存,并将附件的ID存储在隐藏字段中。这样,我们就可以在后续的操作中使用这些附件了。

请注意,以上代码仅为示例,您可能需要根据实际需求进行适当的修改和调整。另外,腾讯云提供了丰富的云计算产品和服务,您可以根据具体需求选择适合的产品。具体产品介绍和链接地址,请参考腾讯云官方文档。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

5分57秒

JSP视频教程-01_JSP规范介绍

33分11秒

JSP视频教程-03_JSP文件Java命令书写规则

15分35秒

JSP视频教程-05_Servlet与JSP文件分工

22分21秒

JSP视频教程-07_Servlet与JSP实现_试题添加功能

8分30秒

JSP视频教程-09_Servlet与JSP实现_试题更新功能

6分54秒

EL表达式-03_EL表达式初始

18分19秒

EL表达式-05_将引用对象属性内容写入到响应体

15分51秒

EL表达式_07_支持运算表达式

13分5秒

EL表达式_09_应用

34分6秒

考试管理系统_11_自动出题

39分57秒

EL表达式-13_模拟面试

10分9秒

JSP视频教程-02_JSP文件使用展示

领券