每次发布一篇文章,我都会发送推送通知。所有工作都按预期进行,但ACF字段为空。相反,当我重新保存post数据时,它会正确地通过。
基本工作流
我已经阅读了几个线程,但无法实现在创建post之后交付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)似乎没有用,谁有更多的经验,能指出我做错了什么吗?
提前感谢
发布于 2021-04-18 19:55:06
对于任何闯入同一问题的人,我最终都会使用下面的钩子"帖子“。
经过几次测试(其中只包括只在文章发布时触发某些操作),这就达到了目的:
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
) {钩子已经保存了所有元数据,包括ACF字段,这是我最初的问题,没有从这个自定义字段中检索值。
https://stackoverflow.com/questions/67047126
复制相似问题