web-dev-qa-db-ja.com

save_postとpost_updated

私はWordPressとphpが初めてです。特定の投稿のコンテンツが更新されたときにトリガーされる関数を書きたいと思います。

save_postpost_updatedの2つのアクションに出くわしました。一方をもう一方に使用するタイミングについては少し混乱しています。必要なのは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
}
2
user2247061

それでは、Codexから始めましょう。

save_post

インポート、投稿/ページ編集フォーム、xmlrpc、または電子メールによる投稿など、投稿またはページが作成または更新されるたびにトリガーされるアクションです。投稿のデータは、投稿の編集方法に応じて、$ _POST、$ _ GET、またはグローバル$ post_dataに格納されます。たとえば、クイック編集では$ _POSTを使用します。

このアクションは投稿が保存された直後に起動されるので、get_post($ post_id)を使用してこの投稿オブジェクトに簡単にアクセスできます。

3パラメータかかります。

  • $ post_ID
  • WP_Post $ post(投稿オブジェクト)
  • bool $ update(これが更新中の既存の投稿かどうか)

post_updated

更新後の前後で値を比較する必要があるときはいつでもこのフックを使用してください。

このフックは、次のように最大3つの引数を渡します。

  • $ post_ID;
  • $ post_after(更新後のオブジェクトの投稿);
  • $ post_before(更新前のオブジェクトの投稿);

それで、いつあなたはそれらのどれを使うべきですか?

特定の投稿が以前に存在し、現在更新されている場合にのみ、post_updatedが起動されます。新しい投稿が挿入されたときには呼び出されません。あなたが与えられた記事の前のバージョンで何かをしたいなら、それは非常に役に立ちます。

投稿が保存されるたびにsave_postが起動されます。あなたはここで与えられた記事の前のバージョンに簡単にアクセスすることはできません(利用可能であれば、リビジョンを使う必要があるでしょう)。

そしてもう少し混乱します;)

もう1つアクションがあります。

  • save_post_{$post->post_type}は、save_postと同じパラメータを持ち、save_postの直前に起動されます。特定の投稿タイプに対してのみコードを実行する場合は、これを使用できます。
1