php ACF更新字段功能不更新WordPress中的任何数据

62lalag4  于 2023-06-04  发布在  PHP
关注(0)|答案(2)|浏览(139)

我已经创建了2个自定义领域的ACF(高级自定义字段)的职位。第一个是date,第二个是volumevolume字段应该能够从date字段中按照year获取数据。但是,什么都没有更新。
下面是代码:

function UpdateVolumeField(){
    $post_id = false;
    $date_field = get_field('date_created', $post_id);
    $volume_field = get_field('volume', $post_id);

    //Calculation
    $year = date_format(date_create($date_field), 'Y');
    $vol  = 0;
    for($i=2010; $i<=$year ;$i++) {
        $vol += 1;
    }
    update_field('volume' ,$vol, $post_id);
}
add_action('acf/save_post', 'UpdateVolumeField');

“date_created”是日期字段,“volume”应根据“date_created”年份进行更新。
当在“date_created”字段中选择日期并更新帖子时,“volume”字段应自动更新,重新加载页面时可以看到。这里的“体积”字段将从2010年开始,因此向前。但没有任何更新。
我做错了什么(所有插件都更新到最新版本)?

o2gm4chl

o2gm4chl1#

在你的代码中,post ID $post_id变量应该作为acf/save_post'钩子的函数参数(动态变量)包含在内,而不是静态地将其包含在你的函数中的false值中,允许从post中检索'date_created'和'volume'字段值,并允许更新'volume'字段值。
请尝试以下重新访问的代码:

// Including missing $post_id function argument variable
function UpdateVolumeField( $post_id ){
    $date_field   = get_field('date_created', $post_id);
    $volume_field = get_field('volume', $post_id);

    //Calculation
    $year = date_format(date_create($date_field), 'Y');
    $vol  = 0;
    
    for($i = 2010; $i <= $year ;$i++) {
        $vol += 1;
    }
    
    remove_action('acf/save_post', 'UpdateVolumeField'); // unhook to avoid infinit loop
    
    update_field('volume' ,$vol, $post_id); // Update 'volume' field
    
    add_action('acf/save_post', 'UpdateVolumeField'); // rehook after updating
}
add_action('acf/save_post', 'UpdateVolumeField');

现在最好能成功。

lmyy7pcs

lmyy7pcs2#

必须包含缺少的$post_id函数参数变量

function UpdateVolumeField( $post_id ){
    $date_field   = get_field('date_created', $post_id);
    $volume_field = get_field('volume', $post_id);

    $year = date_format(date_create($date_field), 'Y');
    $vol  = 0;
    
    for($i = 2010; $ <= $year ;$i++) {
        $vol += 1;
    }
    
    remove_action('acf/save_post', 'UpdateVolumeField'); 
    
    update_field('volume' ,$vol, $post_id); 
    
    add_action('acf/save_post', 'UpdateVolumeField'); 
}
add_action('acf/save_post', 'UpdateVolumeField');

相关问题