save_post vs post_updated

时间:2018-07-17 作者:user2247061

我不熟悉WordPress和php。我想写一个函数,当特定帖子的内容更新时触发它。

我遇到了两个动作,save_postpost_updated. 我有点搞不清楚什么时候应该用一个来代替另一个。我想我需要的是post_updated, 但我不确定。我真的不知道如何检查某个帖子是否更新了。我还没有开始太多关于它的工作(在我的非编码工作中),但在考虑了其他建议后,这里是我迄今为止的想法:

add_action(\'post_updated\', \'test_function\');

function test_function($post_ID, $post_after, $post_before){

    //check if a specific post is updated here 

    $post_content = $post_after->post_content;

    $raw_data=array(
        \'updated_post_content\'=>$post_content,
    );

    //do something
}

1 个回复
SO网友:Krzysiek Dróżdż

好的,让我们从Codex开始:

save_post

是在创建或更新帖子或页面时触发的操作,可以从导入、帖子/页面编辑表单、xmlrpc或通过电子邮件发布。帖子的数据存储在$\\u post、$\\u GET或全局$post\\u数据中,具体取决于帖子的编辑方式。例如,快速编辑使用$\\u POST。

由于此操作在帖子保存后立即触发,因此您可以使用get\\u post($post\\u id)轻松访问此帖子对象。

需要3个参数:

  • $post\\u ID
  • WP\\u post$post(post对象)
  • bool$update(无论这是否是正在更新的现有帖子。)

post_updated

每当需要比较更新前后的值时,请使用此挂钩。

此挂钩最多传递3个参数,如下所示:

$post\\U ID

  • $post\\u after(更新后的post对象)
  • $post\\u before(更新前的post对象)post_updated 仅当给定帖子之前存在且当前已更新时,才会启动。当插入新帖子时,它不会被调用。如果你想对之前版本的文章做些什么,这是非常有用的。

    save_post 每当保存帖子时都会被激发。在这里,您无法轻松访问给定帖子的早期版本(如果有修订版,您必须使用修订版)。

    还有一些困惑;)

    还有一个操作,您可以使用:

    • save_post_{$post->post_type} 参数与相同save_post, 就在之前save_post 如果您只想为给定的帖子类型运行代码,您可以使用它

  • 结束

    相关推荐

    当本地服务器从wp-config.php读取`WP_HOME`时,远程服务器不读取

    我有一个wp配置。包含以下变量的php文件:define( \'WP_HOME\', $_ENV[\'WP_HOME\'] ); define( \'WP_SITEURL\', $_ENV[\'WP_SITEURL\'] ); 在我当前的设置中,这将使用dotenv从加载值。服务器上的env文件。但出于这个问题的目的,我也尝试在这两个地方对域进行硬编码。在我的本地服务器上,URL为https://sitename.test. 它在/wp admin/options-general下正常工