【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

勢いでWordPressのちょっとしたカスタマイズをした話

こんにちは。
開発チームのワイルド担当、まんだいです。

このビヨンドブログでは、技術面や文法でおかしなところがないかチェックをするために、書いた人とは別の人がダブルチェックをするという工程を経て、公開されるようになっています。
今までは、チャットワーク上で「この記事書いたから見て~」みたいなやり取りをしていたのですが、いちいち書いた後にチャットワークで報告するの、面倒だよなぁと思ったので、レビュー待ちになったらチェックをお願いするスクリプトを勢いで書いてみました。

 

何をどうしたのか

ブログの記事を書き終わった後、「下書き」の状態から、「レビュー待ち」という状態にするのをフックにして、Chatwork APIを通じて確認依頼を投稿するという機能を付けました。

プログラム的にやっていることは、以下の通りです。

  • ブログ記事の遷移状態のチェック
  • 記事の情報、書いた人の情報を収集
  • Chatwork APIにPOST

これだけです。

で、これが完成したソースです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
 * レビュー待ちのものをチャットワークに投稿
 */
function announce_blog_status_in_review($new_status, $old_status, $post){
    if ($old_status != 'pending' && $new_status == 'pending'){
        $cw_room_id = 'XXXXXXXX';
        $cw_api_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXX';
        $cw_to = 'xxxxxxxx';
 
        $cw_target_url = 'https://api.chatwork.com/v2/rooms/'. $cw_room_id. '/messages';
 
        $blog_title = wp_specialchars_decode($post->post_title, ENT_QUOTES);
        $blog_author = wp_specialchars_decode(get_the_author_meta('last_name', $post->post_author), ENT_QUOTES);
        $message = "[info][title]レビューはいりました[/title]\n";
        $message.= "[To:$cw_to] ブログおじさんさん\n";
        $message.= $blog_author. "さんがブログをレビューを待っています!\n";
        $message.= "タイトル : ". $blog_title. "\n";
        $message.= "URL : $post->guid[/info]";
 
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $cw_target_url);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-ChatWorkToken: '. $cw_api_key));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, array('body' => $message));
        curl_exec($ch);
    }
}
add_action('transition_post_status', 'announce_blog_status_in_review', 10, 3);

 
これを実現するためには、wordpressが提供する関数について、少し知っている必要があったので、それについて触れたいと思います。

 

get_the_author_meta()関数

この関数から、書いた人の情報を取得します。
関数の第3引数になっている$postの中に、author_idは入っていますが、肝心の名前は分かりません。

IDを見ても、それが誰だか分かりませんので、author_idから各種情報を取得するための関数がこちらになります。

関数の第1引数に欲しい情報のキーをセットします。
たくさんあるのですが、全てのキーをまとめたサイトを見つけたので、リンクを貼っておきます。

WordPress に登録されているユーザーの様々なデータを取り出す方法

 

add_action()関数

せっかく関数を作っても、それがいつ実行されるか、フックを設定しないと実行されませんよね。
そのフックに関数を登録する関数がこのadd_action()関数になります。

対になる第1引数が同じ値が設定された、do_action()関数が実行されたタイミングで、add_action()関数によって登録された関数は実行されます。

と言っても、do_action()関数は色んな所に設置されていて、いろんなタイミングで処理をフックできるようになっています。

今回フックした、「transition_post_status」というアクションは、記事のステータスが変更された場合に呼び出されます。
ただ、記事のステータスは実はたくさんあって、変更前と変更後のアクションの組み合わせがわかるので、下書きからレビュー待ちになった場合のみ、処理を行うようにしています。

 

まとめ

wordpressはどんどん機能が追加されて規模が大きくなっているので、なかなかとっつきにくい感もありますが、調べればすぐに何らかの情報は出てくるので、気負わずカスタマイズできるなと思います。
そして意外にカスタマイズが簡単!

沢山の人に使われているだけありますね。

いい感じにパッとできて気分が良かったので、この記事も勢いで書いたというオチでございました。

 
以上です。

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
0
読み込み中...
0 票, 平均: 0.00 / 10
774
X facebook はてなブックマーク pocket
【2026.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

【2026.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

この記事をかいた人

About the author

萬代陽一

ソーシャルゲームのウェブ API などの開発がメイン業務ですが、ありがたいことにマーケティングなどいろんな仕事をさせてもらえています。
なおビヨンド内での私の肖像権は CC0 扱いになっています。