【问题标题】:ACF fields empty for REST after post created创建帖子后,REST 的 ACF 字段为空
【发布时间】:2021-07-06 20:52:30
【问题描述】:

每次发布​​帖子时,我都会发送推送通知。一切都按预期工作,但 ACF 字段为空。相反,当我重新保存帖子数据时,数据正确。

基本工作流程

  • 用户发布帖子
  • 触发操作发送推送通知
  • ACF 字段的有效负载为空(标题、摘录、其余字段都可以)

我已经阅读了几个线程,但是在创建帖子后无法实现将 ACF 字段传递到休息。

我尝试过的:

优先级为 100,以确保帖子已保存,然后再获取信息。

add_action(
      "save_post",
      ["YaguaretePluginApiBlog", "postPushNotification"],
      100,
      3
    );

尝试使用transition_post_status,结果相同。

add_action(
       "transition_post_status",
       ["YaguaretePluginApiBlog", "postPushNotification"],
       99,
       3
     );

add_action('rest_after_insert_post', ["YaguaretePluginApiBlog", "postPushNotification"], 100, 3);

所有这些都可以毫无问题地触发,但在获取 ACF 字段时却没有任何作用。

也尝试了默认的 acf/save_post,但不幸的是,与其他操作相比,这个甚至没有启动

add_action("acf/save_post", [
      "YaguaretePluginApiBlog",
      "postPushNotification",
    ]);

这是我试图获取 acf 字段的内容

尝试使用 ACF 中的 the_field 函数

$data[notificationType] = the_field(
       "yaguarete_push_notification",
       $_post->ID
     );

尝试使用 post_meta 检索字段信息

$data[notificationType] = get_post_meta($post["id"])[
       "yaguarete_push_notification"
     ][0]

尝试使用 ACF 中的 get_field

get_field("yaguarete_push_notification", $post["id"], false)

似乎没有任何效果,有经验的人可以指出我做错了什么吗?

提前致谢

【问题讨论】:

  • 你检查过 acf/save_post 钩子吗? advancedcustomfields.com/resources/acf-save_post 我猜在默认保存后功能期间 ACF 数据尚未更新,因此您描述的尝试失败。
  • 嗨@mynd,感谢您的回复,是的,我确实尝试过,但由于某种原因没有触发。用它更新帖子

标签: php rest action advanced-custom-fields


【解决方案1】:

对于任何闯入相同问题的人,我最终使用了以下钩子“rest_after_insert_post”。

经过几次测试,其中包括仅在发布帖子时触发某些操作,这成功了:

add_action(
      "rest_after_insert_post",
      ["YaguaretePluginApiBlog", "postPushNotification"],
      100,
      3
    );

仅在新帖子发布时发送推送

function postPushNotification($post, $request, $creating)
  {
    $postOriginal = $post;
    $post = [get_post($post->ID)];
    $post = YaguaretePluginApiBlog::formatPosts($post)[0];

    //only send push notification when
    if (
      $postOriginal->post_type == "post" &&
      $postOriginal->post_status == "publish" &&
      $postOriginal->post_modified == $postOriginal->post_date
    ) {

Hook 已经保存了所有元数据,包括 ACF 字段,这是我最初的问题,没有从这个自定义字段中检索值

【讨论】:

    猜你喜欢
    • 2017-02-22
    • 1970-01-01
    • 2020-01-28
    • 2021-05-18
    • 2016-03-07
    • 2022-01-02
    • 2022-01-02
    • 2021-11-30
    • 1970-01-01
    相关资源
    最近更新 更多