私はWordPressとphpが初めてです。特定の投稿のコンテンツが更新されたときにトリガーされる関数を書きたいと思います。
save_post
とpost_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
}
それでは、Codexから始めましょう。
インポート、投稿/ページ編集フォーム、xmlrpc、または電子メールによる投稿など、投稿またはページが作成または更新されるたびにトリガーされるアクションです。投稿のデータは、投稿の編集方法に応じて、$ _POST、$ _ GET、またはグローバル$ post_dataに格納されます。たとえば、クイック編集では$ _POSTを使用します。
このアクションは投稿が保存された直後に起動されるので、get_post($ post_id)を使用してこの投稿オブジェクトに簡単にアクセスできます。
3パラメータかかります。
更新後の前後で値を比較する必要があるときはいつでもこのフックを使用してください。
このフックは、次のように最大3つの引数を渡します。
- $ post_ID;
- $ post_after(更新後のオブジェクトの投稿);
- $ post_before(更新前のオブジェクトの投稿);
特定の投稿が以前に存在し、現在更新されている場合にのみ、post_updated
が起動されます。新しい投稿が挿入されたときには呼び出されません。あなたが与えられた記事の前のバージョンで何かをしたいなら、それは非常に役に立ちます。
投稿が保存されるたびにsave_post
が起動されます。あなたはここで与えられた記事の前のバージョンに簡単にアクセスすることはできません(利用可能であれば、リビジョンを使う必要があるでしょう)。
もう1つアクションがあります。
save_post_{$post->post_type}
は、save_post
と同じパラメータを持ち、save_post
の直前に起動されます。特定の投稿タイプに対してのみコードを実行する場合は、これを使用できます。