以前、WP関数wp_insert_post内で使われているアクションフックについて書きましたが今回はフィルターフックについてです。
完璧に理解したわけでも無いので、判った範囲です。
フィルターフック『wp_insert_post_empty_content』
記事の新規追加または更新時に投稿のタイトルや内容が空かどうかを確認する部分で使われています。
WordPressでのサイト制作時に使うことはあまり無さそうです。
フィルターフック『wp_insert_post_parent』
恐らく親記事のIDの設定をしているということだと思います。
使う時はこんな感じ。
function post_function($post_parent, $post_id){
//処理
return $post_parent;
}
add_filter('wp_insert_post_parent', 'post_function');
何らかの条件下において、強制的にある記事の子記事にするというような場合に使えそうです。
フィルターフック『wp_insert_post_data』
上2つはそれほど使用頻度は高く無さそうですが、これはかなり使いそうです。今回のメインと言ってもいいかもしれません。
function post_function($data){
//処理
$data['post_status'] = 'draft';
return $data;
}
add_filter('wp_insert_post_data', 'post_function');
上記コードの関数『post_function()』の引数$dataに投稿データが以下のような連想配列として入っています。
post_author : 投稿者 post_date : 投稿日 post_date_gmt : 投稿日のGMT post_content : 本文 post_content_filtered : すみません。判りません。 post_title : タイトル post_excerpt : 抜粋 post_status : 記事状態(publish⇒投稿、draft⇒下書き、など) post_type : 投稿タイプ(普通の記事はpost、固定ページはpage) comment_status : コメントが閉じられているかどうか ping_status : ピンバック/トラックバックが閉じられているかどうか post_password : 投稿のパスワード post_name : 投稿スラッグ to_ping : すみません。判りません。 pinged : すみません。判りません。 post_modified : 修正日 post_modified_gmt : 修正日のGMT post_parent : 親記事ID menu_order : ページの並び順(固定ページの場合に使います) guid : 投稿のGUID
ちなみに上記のコードは、post_statusを強制的にdraftにしているため、投稿が全て下書きになります。
ここでタイトルにプレフィックス的なものを付けてみたりとか、抜粋を自動的に入力したりとか、投稿時間を一律で3時間後にするなどということも可能かもしれませんね。(最後の投稿時間については未検証です。)
このフィルターフックはデータベースへの保存前に実行されます。カスタムフィールドについては未検証ですが、取得は出来ないと思われます。
あと、ここのpost_parentは、上のフィルターフック『wp_insert_post_parent』時に設定されるものがそのまま入ります。post_parentをここで書き換えてしまう、と考えると『wp_insert_post_parent』も使わなくていいかもしれませんね。
さいごに
『wp_insert_post_data』は重要なフィルターフックですね。いろいろ使えます。
特にpost_status関連はここが最適、というかここでしか使えないと思います。
ただ、本文を操作したいだけならフィルターフック『the_content』を使った方が良いかもしれません。
どちらが良いかはまだ判らないので、またいずれ。
ピンバック: wp_insert_postに含まれるアクションフックとフィルターフック | hacknote