• 解決済 masamune

    (@masamune)


    デフォルトでは事前(未来日付)投稿を作成するとその日時が到来するまで公開されませんが、事前告知したい時にはこの機能が仇になってしまいます。
    そこで公開日時の設定に関わらず、すべてを即時公開する手立てはないでしょうか?

    /wp-includes/post.php
    内の $post_status = ‘future’; を $post_status = ‘publish’; に編集する方法もあるようですが、
    アップグレードする都度の訂正が必要ですから、プラグインがあれば…
    そして、あわよくば投稿ごとにこれを設定できれば…
    とお尋ねする次第です。

    ご教示のほどよろしくお願いいたします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター jim912

    (@jim912)

    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 );
    トピック投稿者 masamune

    (@masamune)

    jim912さん、ご教示ありがとうございます。

    お教えいただいたコードをfunctions.phpに追加したところ、あっさり公開されました。
    これでWordPressがアップデートされても手を煩わせずにすみます。
    本当にありがとうございました。

    トピック投稿者 masamune

    (@masamune)

    >各位
    以前に「解決済み」としましたが…
    /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 );

    予約投稿機能を解除するプラグインを作成しました。

    これによって、記事毎に解除するか解除しないかを選択出来ます。

    配布先はこちらです

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「予約投稿機能をオフにする」には新たに返信することはできません。