読者です 読者をやめる 読者になる 読者になる

My days of...

生活のことなど

WordPressでsave_postというフックを使うと、新規作成をクリックした時点ですでに動作していた


WordPressの "save_post" というフックは、投稿やページを「新規追加」する際に有効化されるようなので、投稿後に何らかのアクションをさせる場合、"edit_post"というフックを使う方が合っているのだろうか?

 使用しているWordpressのバージョンは4.4.2。

 

WordPressのCodexにある例では、

function my_project_updated_send_email( $post_id ) {

// If this is just a revision, don't send the email.
if ( wp_is_post_revision( $post_id ) )
return;
$post_title = get_the_title( $post_id );
$post_url = get_permalink( $post_id );
$subject = 'A post has been updated';

$message = "A post has been updated on your website:\n\n";
$message .= $post_title . ": " . $post_url;

// Send email to admin.
wp_mail( 'admin@example.com', $subject, $message );
}
add_action( 'save_post', 'my_project_updated_send_email' );

 これを実行すると、管理メニュー側で上部メニューの「+新規」または投稿や固定ページの「新規追加」をクリックしたら、メールが送られてきた。

Plugin API/Action Reference/save post « WordPress Codex

そして「公開」ボタンを押しても何も起こらなかった。また、すでに追加された投稿を開き、編集後、「更新」を押すと動作した。バージョン4から動作が変わったのか、それとも正しい動作なのかよくわからないが、「公開」や「更新」ボタンを押して動作するプラグインやfunctionを書きたい場合は、Hookをsave_postではなく、edit_postにするのが正解の模様。

 

ビジネスサイトをこれからつくる WordPressデザイン入門 サイト制作から納品までのはじめの一歩

ビジネスサイトをこれからつくる WordPressデザイン入門 サイト制作から納品までのはじめの一歩

  • 作者: 秋元英輔,清野奨,プライム・ストラテジー株式会社
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2016/02/16
  • メディア: 単行本
  • この商品を含むブログを見る