masamuneさん、こんにちは。
post_statusをpublishにすれば良いのであれば、/wp-includes/post.phpにデータベースに登録するデータをフィルタリングできるwp_insert_post_dataというフィルターフックがあります。
下記、コードをテーマのfunctions.phpに追加すれば、本体改変なく強制的にpost_statusをpublishにできるはずです。
function forced_publish_future_post( $data, $postarr ) {
if ( $date['post_status'] == 'future' && $postarr['post_status'] == 'publish' ) {
$date['post_status'] == 'publish';
}
return $data;
}
add_filter( 'wp_insert_post_data', 'forced_publish_future_post', 10, 2 );
jim912さん、ご教示ありがとうございます。
お教えいただいたコードをfunctions.phpに追加したところ、あっさり公開されました。
これでWordPressがアップデートされても手を煩わせずにすみます。
本当にありがとうございました。
>各位
以前に「解決済み」としましたが…
/wp-includes/post.php 内(168X行辺り)の
$post_status = ‘future’; → $post_status = ‘publish’;
が利いたままテストしてしまい、ここを元に戻すとお教えいただいたコードでは
即時公開されないままでした。
今回、Jim912さんにご教示いただいたコードの$dateを以下のように$dataに
修正すればいいと外部でご教示いただき、テストでもうまく動作いたしましたので、
同じような使い方をしたい方々のために改めて提示させていただきます。
テーマ/functions.php 内に以下のコードを追加してください
function forced_publish_future_post( $data, $postarr ) {
if ( $data['post_status'] == 'future' && $postarr['post_status'] == 'publish' ) {
$data['post_status'] = 'publish';
}
return $data;
}
add_filter( 'wp_insert_post_data', 'forced_publish_future_post', 10, 2 );
予約投稿機能を解除するプラグインを作成しました。
これによって、記事毎に解除するか解除しないかを選択出来ます。
配布先はこちらです