gpt4 book ai didi

php - WordPress "save_post"操作问题

转载 作者:可可西里 更新时间:2023-11-01 06:38:58 25 4
gpt4 key购买 nike

我开发了一个 WordPress 插件,它需要在保存自定义帖子类型的帖子时执行额外的处理。

最合乎逻辑的解决方案是利用“save_post”操作。在被调用时,操作处理程序会在自定义表中创建或更新数据库记录(取决于点击的是“创建帖子”还是“更新帖子”)。

我已经实现了这个并且它似乎工作得很好,但是有一个小问题我想解决。似乎第一次加载“创建帖子”页面时也会触发“save_post”(即在输入任何用户输入之前和按下提交新/更改按钮之前)。

这意味着自定义数据库表会为每个保存的新帖子填充一个空白行。这也意味着每次加载添加帖子页面时都有一个空行。

这是我的“save_post”处理程序的简化版本:

function do_save_post($post_id) {
if (get_post_type($post_id) !== 'mycustomtype')
return $post_id;

if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
return $post_id;

if (!current_user_can('edit_mycustomtype'))
return $post_id;

echo 'This happens when selecting "Add New" from admin sidebar.';
echo 'Even though post has not been saved or updated.';
echo 'This should only happen when button on right of editor is clicked.';
}

如何检测帖子是否真正被保存?

最佳答案

我遇到了同样的问题并查看了 post.php 的相关部分。结果是每次 post.php 运行时都会调用 save_post,因此您将在创建帖子、列表等时运行它。

在 WP 3.1 中,“post_updated”仅在 post.php 中的保存/创建事件中被调用。所以我用了:

add_action('post_updated', 'some_function');

希望这对你也有用。

关于php - WordPress "save_post"操作问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5434219/

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