首页
学习
活动
专区
工具
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存储在隐藏字段中。这样,我们就可以在后续的操作中使用这些附件了。

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

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

相关·内容

自动为WordPress文章添加特色图像

WordPress的特色图像是一个很实用的功能,可以文章列表中为每篇文章添加一张缩略图。但特色图像需要在编辑文章时手动添加很不方便,下面的代码可自动将文章中的第一张图片设置为特色图像。...“post_parent=post- ID&post_type=attachment&post_mime_type=image&numberposts=1”?); ????????if?...function add_action(‘the_post’,?’wpforce_featured’); add_action(‘save_post’,?’...wpforce_featured’); add_action(‘save_post’,?’wpforce_featured’); add_action(‘draft_to_publish’,?’...wpforce_featured’); 其中的数字414,是媒体库中某个图片附件的ID号。 提示 上面的代码只是一篇技术文章,可能会影响到之前添加的特色图像,所以不要轻易自己的网站上做试验。

1.4K20

WordPress的可拓展性初探(二)

作者:西瓜玩偶(racnil070512 at hotmail dot com) 一篇文章介绍了如何设计数据库,从而达到可拓展性的目的。...下面的篇幅将介绍PHP的代码方面,如何设计才能达到可拓展性。 2. 钩子(hook)方法 在给一个系统书写插件的时候,我们往往需要在原来工程的某个特定位置加入一段代码。...每一个钩子方法都有特定的名称以及定义,例如 save_post ,表示当一篇文章被保存时需要执行的代码,WordPress调用这个方法时,会给我们传入被保存的文章ID。...这样上述代码就会被执行,我们的插件就利用 add_action 函数的调用,把发送邮件的功能注册save_post 这个钩子方法。...到了保存文章的时候,WordPress会调用 save_post 这个钩子方法——它首先查找钩子方法的注册列表,找出有哪些函数注册save_post ,然后根据优先级顺序依次调用执行。

749120

一个函数就搞定 WordPress 文章选项开发

的基础开发出来的。...WordPress 文章选项开发有点烦 如果我们使⽤ WordPress 原⽣的代码⽂章编辑页⾯创建文章选项的话,需要两步: 使用 add_meta_boxes 函数创建文章选项的表单: function...php } 通过 save_post hook 保存数据: function save_post_options( $post_id ) { // verify if this is an auto...' ); 啰啰嗦嗦一大段代码,实际只显示了一个单选框,并且保存它: 和 WordPress 原生设置页面开发一样,这是反人类的操作,所以我们一样要简化我们的开发流程,一个函数就搞定。...所以上面代码就是 文章编辑页面的侧边添加一个「SEO设置」的选项框,它有三个字段,分别是「SEO标题」,「SEO描述」和「SEO关键字」: 然后在后台文章列表页也可以进行设置操作: 点击上面「SEO

36630

优化WordPress性能的高级指南

但WordPress可能很慢,那么你如何优化呢? 有关如何调整和优化WordPress的文章有很多。事实,WordPress本身提供了一个强大的WordPress优化指南。...基本,我从数据库引擎中脱掉了一些工作,而是将其转移到PHP引擎,功能和在数据中处理的相同但在内存中,因此更快。 如何做的? 首选,我查询中删除了post__not_in参数。...WordPress不仅给我们处理它们的方法,而且还使我们以最有效的方式这样做。 一些选项甚至系统启动时直接加载,从而为我们提供更快的访问(创建新选项时,我们需要考虑是否要自动加载它)。...所有数据都被缓存在内存中,以便更快的访问,但只有该请求期间可用。 ? 支持持久缓存需要安装一个持久缓存插件。...我们只关注插件应该如何运行,而不是如何处理该功能,或者如何以有效的方式进行操作。 从上面可以看出,WordPress中表现不佳的根本原因是不好的(bad)的和低效率的代码。

7.1K20

WordPress 函数:get_post() 获取指定 ID 文章相关信息

[缩写:GMT,格式:年-月-日 时-分-秒]) post_content(文章内容) post_title(文章标题) post_category(文章分类编号[注:2.1之后的版本值总为0。...(文章最后修改格林尼治标准时间[缩写:GMT,格式:年-月-日 时-分-秒]) post_type(文章类型包括页面,文章,附件) comment_count(评论总数) 示例:获取指定ID文章内容 格式一..."\n"); fclose($xzhFile); } #add_action('save_post', 'post_baidu_xzh2', 10, 1); /...('publish_future_post', 'post_baidu_xzh2', 10, 1); // 到定时发布文章设定的时间点就会被触发 米扑博客先前写的一篇博客里 WordPress...发布文章触发动作钩子 ,可以查到动作钩子的函数参数和个数 动作钩子: publish_post:参数一个($post_ID),点击发布文章时就会被触发,仅含已发布;(推荐) save_post:参数一个

59230

Git如何恢复之前版本,resetrevert命令行和IDEA操作步骤

问题描述 利用github实现多人合作程序开发的过程中,我们有时会出现错误提交的情况,此时我们希望能撤销提交操作,让程序回到提交前的样子,本文总结了两种解决方法:回退(reset)、反做(revert...如下图,假设只有一个分支: 方法说明 方法1,Reset Head指针,会抛弃原来的提交记录,使Head指针强制指向指定的版本。...查看版本号: 使用命令“git log”查看: 也可以github网站上查看: Idea,点击项目右键git->Show Histroy ->选择需要回滚的版本,右键Copy Revision...Number 2.1 命令行操作回退到指定版本,把指定版本之后的提交全部抹杀掉 使用“git reset --hard 目标版本号”命令将版本回退,ideaTerMinal输入命令 再用“git...github图形化界面上看,远程库的HEAD也已经指向目标版本: 4.IDEAGit Reset 选项说明 提交版本2的修改后,想回退到版本1,选择版本右键Reset Current Branch

5.9K20

使用这三种方法提交 WordPress 博客链接到百度站长,百度收录立刻翻倍

建好 WordPress 站点之后,最期待的事情就是搜索引擎收录自己的站点,如何加速这一过程呢?对于国内用户来说,就是提交链接到百度。...4、自动推送:通过一个轻量级链接提交组件实现,将自动推送的 JS 代码放置站点每一个页面源代码中,当页面被访问时,页面链接会自动推送给百度,有利于新页面更快被百度发现。...WordPress 博客应该如何做?...除了第三种百度站长后台手工提交没什么好讲之外,其他三种方法,WordPress 博客都能完美支持了: 1、首先通过插件生成站点的 Sitemap,WordPress 很多插件都会生成适配百度站长的...push.js'); } 3、使用 WordPress 的 Hook 主动推送刚刚发布的文章,WPJAM Basic 插件的「简单SEO」扩展中通过下面代码实现了主动推送刚刚发布的文章: add_action('save_post

87730

Wordpress按评论时间给文章排序

我们都知道wordpress文章发布后都是按照发布时间进行排位,最新发布的最前面。但是有的网友使用wp作为论坛,就需要新的排序方式。比如按最新评论排序。...原理:给每篇文章添加一个自定义字段_commentTime(这个字段的值为最新一条评论的时间)然后使用query_posts函数实现所有文章按照自定义字段_commentTime的值进行排序 具体操作:..., meta_key, meta_value)select ID, 'center', 'true' from wp_posts where post_type = 'post'; 二.主题functions.php...wp_is_post_revision($post_ID)) { delete_post_meta($post_ID, '_commentTime'); }}add_action('save_post...', 'ludou_comment_meta_update'); 3.使用函数query_posts更改文章排序index.php中查找代码 if (have_posts()) 或 while (have_posts

69230

2019年11月2日:总结iOS技术面试题及应对答案

一、如何绘制UIView? 绘制一个UIView最灵活的方法就是由它自己完成绘制。实际你不是绘制一个UIView,而是子类化一个UIView并赋予绘制自己的能力。...当一个UIView需要执行绘制操作时,drawRect:方法就会被调用,覆盖此方法让你获得绘图操作的机会。...2.get没有请求体,post有请求体 3.get请求的数据会暴露在地址栏中,而post请求不会,所以post请求的安全性比get请求号 4.get请求对url长度有限制,而post请求对url长度理论是不会收限制的...,但是实际各个服务器会规定对post提交数据大小进行限制。...(如音频文件,图片文件)下载到本地,使程序员更多时间是花到用户体验体验

83300

WordPress CMS百度快速收录 API 提交代码以及配置教程

食用方法 将下面代码添加到你的 WordPress 当前使用的主题的 functions.php 文件合适地方,并且将代码中的 API 地址修改替换为你百度搜索资源平台的快速收录的 API 接口地址即可...//WordPress 百度快速收录 API 提交代码 add_action('save_post', 'fanly_baidu_dailysubmit', 10, 3); function fanly_baidu_dailysubmit...答:MIP 站点将作为 H5 站点进行正常收录,搜索结果的排序规则与过去保持不变,只有点击跳转时变更为直接跳转源站。 3)对于已经被 MIP Cache 服务缓存的网页将如何处理?...答:已被缓存的网页将会在 MIP Cache 服务下线之后,逐渐缓存失效自然清退,无需站长做任何操作。 说白了,做小程序吧,自己做的流量都拿去给百度吧….....本身小站流量就不多,这波操作后网站流量更是被百度小程序吸走。

1.3K50

Unity通用渲染管线(URP)系列(十五)——粒子(Color and Depth Textures)

可以通过一次调用SetRenderTarget来设置两个附件,并为每个附件使用相同的加载和存储操作。 ? 两个缓冲区也需要被释放。...创建一个新的CopyAttachments方法,该方法将在需要时获取一个临时的重复深度纹理,并将深度附件数据复制到其中。这可以通过命令缓冲区使用源纹理和目标纹理调用CopyTexture来完成。...这比通过全屏draw call进行操作要有效得多。另外,请确保Cleanup中释放额外的深度纹理。 ? 绘制了所有不透明的几何图形之后,我们将仅复制一次附件,因此Render中的天空盒之后。...这意味着深度纹理仅在渲染透明对象时可用。 ? 3.3 不带Post FX的拷贝深度 仅当我们需要复制的深度附件时,复制深度才有效(当前仅在启用post FX的情况下)。...(flipbook粒子的扰动贴图) 这可用于创建有趣的扰动效果。逼真的效果将是细微的,因为系统运动时稍微变形就足够了。但是出于演示目的,我使效果很强,因此即使屏幕截图中,效果也很明显。 ‍ ?

4.5K20

Linux集群系列之一——集群基础概念

为了是附件也能在不同服务器进行访问,数据同步,可以独立出来一台主机作为NFS服务器使用,附件则保存在NFs中,多台服务器都可以直接访问和存储。...调度服务器如何知道后端服务器的是否在线或宕机,而进行调度分配?...数据请求是文件级别上完成的。网络是以文件 RAID,是磁盘阵列,是通过主板的总线连接到RAID,相当于本地存储设备,数据是块级别上交换的。...注意:通过DAS机制,若两个进程工作一台主机上同时处理同一个文件,可以通过加锁,防止同时处理同一个文件。 当两个进程工作两个主机上,都同时处理DAS的主机同一文件。...NFS自身可以锁定两个同时写的操作。阻塞另一台主机的写操作

1.5K80

TrickBot银行木马最新的POS相关模块psfin32分析

一旦TrickBot收集到了信息,它就会将信息存储到其预先配置的“Log”文件中,通过POST方式发送到其C&C服务器Dpost。...如果无法访问C&C服务器,则会提示“Dpost服务器不可用”,否则提示会显示“报告已成功发送”。 ?...考虑到模块的部署时间,威胁参与者可能正在利用假期来收集和发送信息,特别是Brad DuncanISC发表了相关报告之后,该报告讨论了针对美国的关于TrickBot宏的恶意垃圾邮件活动。...虽然当时分析的样本文件和URL已无法访问,但依然对个人和企业起到警告作用:不要打开可疑的电子邮件,文件和附件。...个人和企业可以通过多层防御使自己免受像TrickBot这样的银行木马侵害。同时确保只安装,下载和浏览白名单下的应用程序和站点。

60510

微信小程序--网络请求api

1.问题描述 本次博客的内容是对之前天气api使用的一个补充,会具体介绍如何发送网络请求(request)的使用方法。...request函数和返回参数): https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html 然后就是如何使用网络请求...,因为基本是要测试的,所以要先设置小程序不校验业务域名以及TLS版本以及HTTPS整数(图1)。...图1 图2 之后就是使用给的请求参数,拥有了一个api后需要测试它是否可用,这里我们可以使用postman进行测试,根据你自己的api的需求进行测试,我这里使用的是post请求(图2)。...(详细代码见附件) 3.结语 本次细化了微信小程序使用api的方法,后续会继续学习小程序的api。

2.1K20
领券