1. HOME
  2. WEB制作
WEB制作 公開

記事更新日

WordPressの標準機能に無いもので、どうしても実装したい機能があり、それを実装する為には【新規記事作成時】に処理を実行する必要があったので、調べてみた。

新規記事作成時にのみ動作させる

新規記事を作成する時、メニューでは【新規追加】という表記になっていますね。
ここをクリックした時にのみ動作させるコードです。

function get_article_created_time() {
    // 新規記事作成時の処理
}
add_action( 'admin_head-post-new.php', 'get_article_created_time' );

add_actionの【admin_head-】を使って処理させています。
このadmin_head-というフックは、とても便利で【特定のページでのみ処理を実行】したい時に応用して使えます。

上記のコードの例
【admin_head-post-new.php】
このpost-new.phpは新規記事・新規固定ページ・新規カスタムページを作るときに呼び出されます。

【admin_head-post.php】等に変更すると、記事編集時や下書き保存・公開完了時などで動作します。

嵌ったところ

今回admin_headのフックを使い、新規記事作成時に記事IDを取得したかったのですが、引数を渡してもダメだったのでちょっと嵌りました。

新規記事作成時には、データベースには記事IDなどの情報は書き込まれているのですが、取得できない。

つまりadmin_head-post-new.phpの動作タイミングはデータベースにデータが格納される前、という事になるのかな?と思っていたら、案外簡単に記事IDを取得できました。


function get_article_created_time() {
    // 記事IDの取得
    global $post;
    $create_time_id = $post->ID;
}
add_action( 'admin_head-post-new.php', 'get_article_created_time' );

globalを使ったら取得できた!
しかし、グローバル変数を汚す事になるのであんまり使いたくないけど、解決方法が見つからないので、とりあえずはこの対策で実装。

これが出来たので、新規記事投稿時にのみ、add_post_meta等でカスタムフィールドにフィールドと値を追加したり、色々な事が出来るようになりました。