当我将帖子 ID 作为变量传递时,Wordpress ACF update_post_meta 不写入

问题描述 投票:0回答:1

当用户提交 CF7 表单时,我有一个函数钩子,它会触发并保存到当前表单的自定义模板。 不过,我想更新另一种已存在的自定义帖子类型的一个字段(全部使用 acf 创建)。 我知道目标帖子 ID,因为它作为显示表单上的隐藏字段传递,但这不起作用

$postfield = 'post_status'; $newvalue = '已提交';

update_post_meta($postid,$postfield,$newvalue);

......但这确实如此?

update_post_meta(2147,$postfield,$newvalue);

如果我将帖子 ID 作为原始整数传递,它可以正常工作,但如果我尝试将其作为变量传递,它就不会写入更新。

我已经浏览了帖子并尝试了建议,但似乎找不到解决方案。 我尝试过打开和关闭 ACF 字段的 REST Api,我将目标字段设置为数字,甚至尝试在传递它之前强制它为 (int),只是为了确定。 感觉我一定错过了一些非常简单的东西!

wordpress advanced-custom-fields update-post-meta
1个回答
0
投票

好吧,在经历了很多挫折之后,我让它工作了,但至于它为什么工作,我有点模糊。

我的父帖子 ID 在子帖子中保存为数字。填写 cf7 表单并提交的用户可以编辑子帖子。 提交时,会触发挂钩并保存数据等。目的是在父帖子(在后端)中更新一个字段,以通过更改状态字段的值来注册用户已提交表单。

我的子表单使用

将发布日期加载到数组中
$submission = WPCF7_Submission::get_instance();
$data = $submission->get_posted_data();

然后我用 ;

分配并访问元素
$parentid= $data['parentid']; //as parentid is saved to the child post

出于某种原因,这不想将 id 传递给变量(即使对于每个其他变量,我都有它工作得很好。

相反,我必须使用;

直接在数组外部分配parentid变量
$parentid = get_post_meta( $post_id, 'parentid', true );
$postfield = 'post_status';
$newvalue = 'new status setting';
update_post_meta($parentid, $postfield, $newvalue);

它有效,但我仍然想知道为什么以及出了什么问题?

感觉好像我错过了一些非常简单的东西,试图添加 2+2 但不得不做 1+1+1+1!

© www.soinside.com 2019 - 2024. All rights reserved.