ACF:中继器字段返回不稳定的API数据,而新字段在保存时将不接受新数据

时间:2018-08-29 19:17:48

标签: php mysql wordpress api advanced-custom-fields

我们正在处理的站点在上周已损坏,我们不知道发生了什么。以下是问题列表,以及我们已解决的步骤:

  • 在我们的API调用中,我们使用get_field()和get_fields()向中继器请求数据,但有时会返回null,false或数组长度。所有内容仍在数据库中。
  • 尝试创建新的转发器内容时,父转发器字段的子字段不会在第一次保存时保存,但是一旦重新添加,就可以随后保存。
  • 创建新字段(任何字段,而不仅仅是转发器)时,密钥将从field_xxxxxxxxxxxxxx格式更改为与名称相同,即简称。
  • 可以将旧的转发器字段更新或保存到其中,而新的转发器字段将不保存数据。

故障排除步骤

提前感谢您能够提供的任何指导:)

1 个答案:

答案 0 :(得分:0)

结果是问题所在是在functions.php中的这段代码用来重写子弹,这是问题所在:

function myplugin_update_slug( $data, $postarr ) {
    if ( ! in_array( $data['post_status'], array( 'draft', 'pending', 'auto-draft' ) ) ) {
        $data['post_name'] = sanitize_title( $data['post_title'] );
    }
    return $data;
}

sanitize_title()函数正在覆盖关键字段并导致ACF失去对字段的跟踪。

我们通过激活一个干净的WP主题解决了这一问题,然后,当我们确认它是子主题中的某些代码时,我们只是在我们的functions.php文件中注释掉了代码,直到找到了令人反感的函数。