高级自定义字段:保存帖子之前的update_sub_field

时间:2017-08-10 16:34:13

标签: php wordpress advanced-custom-fields

预期行为:

当用户更新WP仪表板中的ACF并点击更新时,代码将检查更新的状态字段,如果值已更改,还将修改上次更新字段,然后保存所有信息。

现实:

整体内容已更新,但上次更新字段不受 update_sub_field 代码的影响。但是,如果我在结尾处删除了返回$ post行,则会保存上次更新字段,但整体内容将恢复为原始值(未保存)。

我需要两个人都得救!我感觉事情并没有以正确的顺序发生,如果我能找到正确的过滤器/动作来运行,我可以完成这个任务,但到目前为止,这些都没有使用下面的代码(尝试了不同的优先级)作为args,以及):

add_action( 'acf/save_post' , 'update_post');
add_action( 'save_post' , 'update_post');
add_filter( 'wp_insert_post_data' , 'update_post');

非常感谢任何帮助。谢谢!

function update_post( $post ) {

$projectCount = -1;

if( have_rows('project') ):

    while( have_rows('project') ): the_row();

        $taskCount = -1;
        $projectCount++;

        if( have_rows('project_issue') ):

            while( have_rows('project_issue') ): the_row();

                $taskCount++;

                $oldValue   = get_sub_field('project_current_status');

                $newValue   = $_POST['acf']['field_594afbf65e909'][$projectCount]['field_594afd675e90d'][$taskCount]['field_594c05c666a9f'];

                $date = date('Ymd');

                $updated = ($oldValue !== $newValue) ? 'true' : 'false';

                if ( $updated == 'true' ) { 

                    update_sub_field('project_last_update', $date);

                }

            endwhile;

        endif;

    endwhile;

endif;

return $post;
}

1 个答案:

答案 0 :(得分:0)

我知道那是一个很老的帖子, 但我认为我有一个问题,基于您遇到的相同问题。

我想知道您是否能解决这个问题并分享答案?

我会发表评论,但对不起。