gpt4 book ai didi

php - 更新 ACF 选项页面时,以编程方式更新所有帖子的 ACF 字段

转载 作者:行者123 更新时间:2023-12-04 03:30:04 25 4
gpt4 key购买 nike

我有一个自定义帖子类型,其中设置了一些 ACF 字段。我还设置了 ACF 选项页面。

我正在尝试更新所有自定义帖子的文本字段,并在“选项”页面更新时,从选项页面中的文本字段中的值更新。

这是我尝试过的:

function update_global_flash_text(){
$current_page = get_current_screen()->base;
if($current_page == 'toplevel_page_options') {
function update_global_servicing_text() {
$args = array(
'post_type' => 'custom',
'nopaging' => true,
);

$the_query = new WP_Query( $args );

if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
update_field('servicing_flash_text', $_POST['global_servicing_offer_text']);
}
}

wp_reset_postdata();
}

if(array_key_exists('post',$_POST)){
update_global_servicing_text();
}
}
}
add_action('admin_head','update_global_flash_text');

理想情况下,如果全局字段值已更改,我还想只更新 posts 字段。

最佳答案

您可能正在寻找 acf/save_post Hook 。只要您的 ACF 选项页面被保存,就会触发此事件。只需确保当前屏幕具有您的选项页面的 ID。

function my_function() {
$screen = get_current_screen();
/* You can get the screen id when looking at the url or var_dump($screen) */
if ($screen->id === "{YOUR_ID}") {
$new_value = get_field('global_servicing_offer_text', 'options');
$args = array(
'post_type' => 'custom',
'nopaging' => true,
);

$the_query = new WP_Query( $args );

if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
update_field('servicing_flash_text', $new_value);
}
}

wp_reset_postdata();
}
}
add_action('acf/save_post', 'my_function');

这会让你到达任何地方吗?

编辑:由于您要求仅在全局值发生变化时更新数据,因此您应该执行以下操作:

1 将您的 acf/save_post 操作设置为高于 10 的优先级:

add_action('acf/save_post', 'my_function', 5);

2 获取新旧值:

$old_value = get_field('global_servicing_offer_text', 'options');
// Check the $_POST array to find the actual key
$new_value = $_POST['acf']['field_5fd213f4c6e02'];

3 比较它们 if($old_value != $new_value)

关于php - 更新 ACF 选项页面时,以编程方式更新所有帖子的 ACF 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67110188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com