hello foo bar Saba note | WPで記事公開(更新)時のフックポイント publish_post

WPで記事公開(更新)時のフックポイント publish_post

2016.9.29 (木)

publish_postでフックした際のプラグインの例です。投稿が公開された際、または公開済み投稿の情報が編集された際に実行する。(アクション関数引数: 投稿 ID)ということになっています。idを引数でもらって、get_postから投稿記事のプロパティーをもらってタイトルや記事の内容をそのまま取り出せるという感じです。
またwp_mail()という便利な関数もWPに予め用意されています。値を空にすると無視されたり、内部的にいろいろ処理をしてくれているのでmb_sendmail()を使うよりもWordpressの中では使い勝手がよさそうです。添付の画像なども送信できます。

//更新時にメールを送信
function send_the_content($post_id) {
    $post = get_post($post_id);
    $send_title = $post->post_title;
    $send_content = $post->post_content;
    wp_mail('user@gexample.com',$send_title,$send_content,'From:user@example.com');

    return;
}
//publish_post
add_action( 'publish_post', 'send_the_content', 1 ,6);

フックの基本的な設定方法は、add_action()やadd_filter()でデフォルトの関数との置換、または関数の追加を行うというような構成になっています。フックは後からいくつでも追加することができます。

add_action('publish_post','[追加する関数]', 1 ,6);

この構文はfunctions.php内、またはプラグイン内に幾つでも追加することができます。
get_post()で得たオブジェクトから各投稿項目を得るのは以下のような感じでできます。全部試していませんが、DB内のwp_postテーブルのカラム名で取り出せるようです。

  • $post->ID
  • $post->post_author
  • $post->post_date
  • $post->post_date_gmt
  • $post->post_content
  • $post->post_title
  • $post->post_excerpt
  • $post->post_status
  • $post->comment_status
  • $post->ping_status
  • $post->post_password
  • $post->post_name
  • $post->to_ping
  • $post->pinged
  • $post->post_modified
  • $post->post_modified_gmt
  • $post->post_content_filtered
  • $post->post_parent
  • $post->guid
  • $post->menu_order
  • $post->post_type
  • $post->post_mime_type
  • $post->comment_coun