check_and_publish_future_post()
は、WordPressの予約投稿機能を支える内部関数の1つで、未来日時に設定された投稿が指定時刻を迎えたときに自動的に公開状態へ変更されるよう処理します。
WP-Cron によって自動的に呼び出され、投稿のステータスを future
から publish
に切り替えます。予約投稿の正常な動作に不可欠な関数です。
基本構文
check_and_publish_future_post( int|WP_Post $post );
この関数は、指定された投稿が「公開予定(future
)」であるかを確認し、現在時刻が公開日時を過ぎていれば投稿を公開状態へ変更します。
$post
:投稿ID またはWP_Post
オブジェクトを指定します。
この関数は WordPress内部で使用される目的が主 で、通常は wp-cron
経由で自動実行されます。
引き数と戻り値
引数 | 型 | 説明 |
---|---|---|
$post | int または WP_Post | 対象となる予約投稿の投稿IDまたは WP_Post オブジェクト |
戻り値 | 型 | 説明 |
---|---|---|
なし(void ) | void | 成功・失敗にかかわらず何も返さず、状態を内部的に処理します。 |
使用例
タグを使った使用例
$post_id = 123; // 予約投稿のID
check_and_publish_future_post( $post_id );
このコードは、投稿ID 123
の投稿を即座に「公開」状態へ変更する処理を行います。ただし、この関数を直接使用することは推奨されておらず、通常は wp-cron
により自動実行されるものです。
注意点
- この関数は 内部関数であり非推奨(
_deprecated_function()
が使われていませんが、公式には推奨されていません)。 - 通常は
wp-cron
により自動で呼び出されるため、直接呼び出す必要はありません。 - 正しく動作させるためには、WordPressの
cron
機構(wp_schedule_single_event()
など)が有効である必要があります。 - カスタム投稿タイプに対して予約投稿を使用する場合も自動的にこの関数が呼ばれます。
良く一緒に使われる関数
wp_schedule_single_event()
指定時間に一度だけ処理を行う WP-Cron
イベントを登録します。check_and_publish_future_post()
はこれによって予約実行されます。
wp_schedule_single_event( strtotime( $publish_time ), 'publish_future_post', array( $post_id ) );
wp_publish_post()
投稿ステータスを「公開」に変更します。check_and_publish_future_post()
の内部でも使用されています。
wp_publish_post( $post_id );
get_post()
投稿情報を取得します。予約投稿の状態確認などで使われます。
$post = get_post( $post_id );
if ( $post->post_status === 'future' ) {
check_and_publish_future_post( $post );
}
想定されるトラブル
予約投稿が公開されない
解決方法
- WP-Cronが無効化されている、もしくは正しく動作していない可能性があります。
define('DISABLE_WP_CRON', true);
がwp-config.php
に設定されていないか確認し、必要に応じてcron
を外部から呼び出すように設定してください。
カスタム投稿タイプで予約投稿が動作しない
解決方法
supports
引数に'custom-fields'
や'editor'
だけでなく、'revisions'
と'public' => true
があるか確認してください。publicly_queryable
がfalse
の場合も正常に予約投稿されないことがあります。
Q&A
まとめ
check_and_publish_future_post()
は、WordPressの予約投稿機能を支える内部関数で、指定時刻に予約投稿を自動的に公開状態へ変更します。通常は wp-cron
によって自動実行され、手動での利用は非推奨です。
予約投稿が公開されないなどのトラブルが起きた場合には、まず cron
の設定やサーバーのアクセス状況を見直すことがポイントです。予約投稿の動作理解やトラブル対応の基礎として、知っておくと安心な関数です。
コメント