PHP 初心者が WordPress の プラグイン 作成 ! part14 ( WordPressプラグイン フック )

この記事では PHP 初心者 が WordPress プラグイン を 作成 します。 part14 ではWordPressプラグイン フックの実装を行おうと思います。

今回のプラグインでは「WordPressブログ公開時にココナラのブログに投稿する」を実現します。

なので

アクションフックのpublish_post

を使用します。先日の記事で調査しましたね。

PHP 初心者が WordPress の プラグイン 作成 ! part12 (WordPressプラグイン開発の準備)

残念なお知らせ

publish_postについて調べていると以下のような記事を発見しました。

WordPressで記事公開時と更新時のフックを使い分ける方法

WordPressで記事公開時に動作するフックが何か調べたところ「publish_post」を使うのがスタンダードのようだったので、publish_postフックを利用するコードを書いてみたのだが、公開したときだけでなく記事の「更新時」も処理が実行されてしまった。

なんということでしょう・・・更新時も処理が行われてしまうとのことです。
さらに調べてみるとtransition_post_statusというフックが良いようです。

transition_post_status で記事公開時のみアクションさせる:メモ

上記記事を参考にさせていただき私も実装してみたいと思います!

実装

VS Codeで ./plugins/wp_to_coconara/plugin.php を開き実装してみましょう

以下のコードを「>?」の上に追加します。

add_action( 'transition_post_status', 'publishedCoconara', 10, 3 );

function publishedCoconara( $new_status, $old_status, $post ) {
  if ( $old_status != 'publish'  &&  $new_status == 'publish' ) {
    // 投稿ステータスが公開以外から公開へ変化するとき実行する処理を記載
    // $postからいろいろ取得できるので、記事IDが欲しい場合などは以下のようにする
    $ID = $post->ID;
  }
}

VS Codeではこんな感じです。
ついでに11行目にブレークポイントを置いてみました。

デバッグ開始

それではデバッグモードに移りましょう。

以下のメッセージは×をクリックして閉じておきます。

開発用WordPressを開いて適当に記事を「公開」してみます。

む!止まらない!!

いろいろ試したんですが止まってくれない😣

 

プラグインの有効化

いろいろ調査していて思い出しました。
まだ有効化していませんでした(笑

「有効化」リンクをクリック。

準備万端のはず!

 

再度デバッグ

今度はどうだ・・・お願い😆

 

ついに来ました😇

なんとかデバッグ成功です!$postの内容もちゃんと確認できすね。

まとめ

WordPressプラグインのフックの実装を行いました。

実装自体は問題なかったのですがデバッグできなかった時は焦りました。

ちゃんと「公開」になったときに自作のプラグインの処理を行ってくれました。

今回は「新規→公開」状態遷移しか確認していませんが、そのほかの状態遷移も確認しないといけませんかね(やろうかなぁ・・・)

今日はここまで!