使用ACF关系字段将发布类型设置为草稿或已发布状态

时间:2021-12-16 作者:user3096584

我目前正在使用ACF关系字段选择器通过自定义帖子类型查询位置,以显示各种页面。这些页面是;“服务”;可向最终用户显示或隐藏的页面。挑战在于,如果用户取消选择服务页面,那么从技术上讲,如果用户知道该链接,该页面仍然可见。更新此选项时,我需要能够将页面设置为草稿状态或已发布。下面是我根据与类似请求相关的其他示例所做的。

function my_acf_update_value( $value, $post_id, $field  ) {
    $ids = get_field(\'our_services\', \'options\');
    $services = get_posts(array(
        \'post_type\' => \'services\',
        \'post_status\' => \'draft\',
        \'post__not_in\' => $ids,
    ));
    wp_update_post($services);
        
}

add_filter(\'acf/update_value/key=field_5c37e435\', \'my_acf_update_value\', 10, 4);
当我第一次这样做时,它立即将它们全部设置为draft from published,而不更新ACF relationship字段选项。我是否需要连接到;更新(&Q);“我的选项”中的按钮?

1 个回复
SO网友:Artemy Kaydash

使用init钩子没有任何意义,因为每次加载页面时都会触发该钩子。

如果要在每次有人更新字段时更新页面的状态,可以使用以下任何挂钩:

  • acf/update_field - 每次字段在保存到数据库之前更新时,都会触发此筛选器挂钩。此挂钩是ACF插件的一部分
  • update_post_meta - 每次字段在保存到数据库之前更新时,都会触发此操作挂钩,但它是WordPress核心的一部分
  • updated_post_meta - 每次字段保存到数据库后更新时,都会触发此操作挂钩。这个钩子也是WordPress核心的一部分
第一个函数将四个参数传递给它的处理程序:$value$post\\u id$field$original。您可以了解更多信息here.

最后两个钩子将四个参数传递给它们的处理程序:$meta\\u id$object\\u id$meta\\u key$meta\\u value。你可以了解更多关于他们的信息herehere.

相关推荐

AJAX操作未触发PHP函数

我以前在WordPress中使用过Ajax,并使其正常工作。然而,事实证明,这种特殊情况(文件上传)很困难。问题似乎是,尽管我在AJAX中设置了操作,但该操作并没有调用php函数formData.append( \'action\', \'uc_user_image\' ); 与PHP中的函数名相同function uc_user_image()我知道Ajax正在工作,因为我在success: function(data) {} 控制台中没有任何错误。我的最终目标是允许用户通过其帐户页面动态更改其个人资料