WordPressの予約投稿時に「秒」まで指定する方法!

WordPressには、予め投稿時間を設定して記事を自動投稿できる「予約投稿」機能がありますよね!

 

この予約投稿機能はとても便利なのですが、投稿を予約した時間丁度にサイトを確認しても記事がなかなか表示されないなんて事も…。
これは“秒”に記事作成開始時点の時間が反映されるWordPress標準の仕様であり、ラグや不具合ではないのです…。

 

例えば、12時丁度に記事をアップしようと予約した場合でも、遅いと12時0分59秒にアップされる事もあるということです。

 

多くの場合、そんな重要な問題ではありませんが、時にはちゃんと決まった時間に投稿したいこともあるのではないでしょうか!?
私は、このサイトでは特に気にしませんが、他のサイトでは気になる時があります…。

 

WordPressのcronをカスタマイズして強制的に“秒”を“0”に固定して投稿させる方法なんてのも見かけますが、どうも大げさに感じてしまいます。
今回は、投稿画面の予約投稿設定の箇所に“秒”のinput欄を表示させるだけの表面的なカスタマイズを施して対応してみたいと思います。

 

 

はじめに

今回のカスタマイズは試験的に当サイトに施した内容です。
コードの稼働実績が足りないので、本投稿の内容を利用される場合は自己責任にてお願いします。

 

やりたいこと

冒頭で書いた通り、投稿ページの予約投稿の日時設定の箇所に“秒”の入力項目を追加し、ここで明確に投稿時間を設定出来るようにしたいと思います。
カスタマイズ後のイメージは下記画像のような感じ。

 

 

秒を任意の値に変更する際の前提

WordPressでは投稿日時の「秒」関して、手入力による変更は原則想定されていません。
しかし、<input type=”hidden” id=”ss” …> のような感じで「秒」に関する隠し値は持っており、投稿日時が変更された際にはこれが適用されるようにはなっています。

 

隠し要素とはいえ「秒」情報を持ってるのに、なぜ“原則想定されていない”と強調して言ったのか?

投稿画面上で「秒」の値だけを何らかの方法で変更しても、これは反映されないからです。
これが、“原則想定されていない”と言った理由で、Wordpressは「秒」の手入力による変更を想定していないため、「秒」の値は投稿日時が変更されたかどうかのチェックには使用されないのです。
なので、「秒」の変更を反映させるには、通常表示されている「年」「月」「日」「時」「分」のいずれかも合わせて変更されていなければいけません。

 

コード実装

以下、サンプルとして functions.php 内に記述する場合のサンプルを掲載します。
管理画面で専用のjsファイルをロードしている方はJavascriptのみ切り出してご利用下さい。

 

functions.php

 

本カスタマイズにより“秒”が表示されるようになるほか、年月日時分のいずれかが変更されていない状態では“秒”のinput要素がグレーで表示されるようになっており、いずれかの値を変更する事でグレーアウトが解除されるようになっています。

また、ここで施しているグレーアウトは視覚的なもののみで、disabledやreadonlyといった編集不可を意味するものではありません。

 

当実装における“秒”input表示色の意味合い

グレーアウト表示時:“秒”の値を書き換えても保存時反映されません
通常表示時:“秒”の値が保存時に反映されます

 

▲カスタマイズ後の表示例(初期表示状態)

 

最後に

今回は、Wordpressの予約投稿で“秒”まで指定する方法について書きました。
「はじめに」項でも書きましたが、当サイトでも現在試験運用の段階なので、ご利用は自己責任にてお願いします。