【发布时间】:2020-06-14 22:20:41
【问题描述】:
当我使用get_field('repeater_name') 时,它返回一个字符串,其中包含一个数字,该数字是中继器的计数,而它应该返回子字段数组,这个问题之前已经多次报告过,但没有一个提供稳定的修复对此,唯一的方法是编辑帖子并点击更新按钮,它将重新生成转发器字段,但在我的情况下,我有 19k 个帖子,不可能编辑每个帖子。
have_rows('repeater_name') 也按预期返回 false 和真实字段数据(get_post_meta($post_id, "field_{$field_key}", true) 返回NULL
如果能提供任何帮助或任何自动脚本来重新生成转发器字段键并填充所有帖子的值,我将不胜感激。
此问题之前在 here、here 和 here 中报告过,但没有一个真正的修复。
编辑:
我发现了问题,问题在wp_postmeta表中,存储了错误的字段键:
wp_postmeta table
| meta_key | meta_value |
| ------------- |:-------------:|
| _repeater_name | field_XXXXXXX |
| _repeater_0_subfield | field_ABCDEFG |
| _repeater_0_subfield2 | field_HIJKLMN |
wp_posts 表中的相同字段键应该匹配,但它们不匹配(可能由于数据迁移或其他原因):
| post_excerpt | post_name | post_type |
| ---------------| ------------- |-----------|
| repeater_name | field_YYYYYYY | acf-field |
| subfield | field_BBBBBBB | acf-field |
| subfield2 | field_CCCCCCC | acf-field |
我认为如果有办法在数据库中同步字段键,那将解决问题
【问题讨论】:
标签: php wordpress advanced-custom-fields repeater acfpro