求助:修正ACF代码实现仅当状态为complete时将字段设为null
问题解决:仅当文章状态为complete时清空指定字段
你的代码核心问题是条件判断误用了赋值运算符——你写的$value = 'complete'是赋值操作,不是比较操作。这会导致不管当前状态是什么,$value都会被强制设为'complete',条件永远为真,所以每次更新文章都会执行清空字段的逻辑。
修正后的代码如下:
add_action( 'acf/save_post', 'my_acf_save_post_7', 10 ); function my_acf_save_post_7( $post_id ) { $value = get_field( 'status', $post_id ); // 用严格比较运算符 === 检查状态是否为'complete' if ( $value === 'complete' ) { update_field( 'project_address_1', null, $post_id ); } }
补充说明:
=是赋值符号,用于给变量赋值;==是松散比较(只对比值,不对比数据类型);===是严格比较(同时对比值和数据类型)。这里用===能避免因数据类型不一致导致的误判,保持代码严谨性。- 如果你的
status字段返回的是字符串类型,用==也能正常工作,但优先推荐===。
内容的提问来源于stack exchange,提问作者Webbb
相关产品推荐
相关产品推荐

