https://wordpress.org/plugins/advanced-schedule-posts/
WordPress のディフォルトの時限設定は、予約公開だけです。
Advanced Schedule Posts プラグインを導入することで、予約公開取り下げ、予約上書き公開ができるようになります。
予約公開取り下げ
これは単純に予約公開の逆です。
指定した日時に公開を取り下げることができます。公開から下書きになります。
予約上書き公開
これは投稿型CMSの弱点を補うものです。
ディフォルトの予約公開と同時に設定することで、公開時に他の投稿に上書くことができます。
どういった時に使えるかを事例をあげて説明します。
ケーススタディ
・プレゼント応募ページを作成したい
・応募期間中、応募終了後にそれぞれ内容を差し替えたい
・応募期間中、応募終了後にそれぞれ内容を差し替えたい
ページを作成するオブジェクトは、投稿でも固定ページでもカスタム投稿でもかまいませんが、応募期間中、応募終了後のコンテンツが表示されるページ、つまりパーマリンクURLは常に同一でなければなりません。
これを時限設定で行うことができるようになります。
1. 応募期間中のページを作成
2. 応募終了後のページを作成
予約上書き投稿を設定して予約投稿する
一覧画面でみるとこう
3. 予約投稿の日時になると自動的に…
応募終了後のページが公開されると同時にスラッグが差し代わり
応募期間中のページのスラッグは下書きに。スラッグも変更される
予約公開取り下げと予約上書き公開の同時設定
予約上書き公開と予約公開取り下げを同時に指定することもできます。
Future To Do
公式プラグインディレクトリからリリースノートを確認してください。
Comments
初めまして。
Advanced Schedule Postsのおかげでかゆいところに手が届き、
非常に便利になっております。
ありがとうございます!
早速ご質問ですが、、
カスタムフィールドの項目を入力すると記事に反映されるカスタム投稿を作成しており、
記事を作成する際は”Really Simple CSV Importer”というCSVインポート用のプラグインを用いて、
所定のフォーマットのCSVを大量にインポートし、一括で記事を複数作成していますが、
CSVをインポートした後に記事内の”予約非公開日時”に反映されるようにしたいです。
どのようにすれば情報を取得できますでしょうか。
以上、お手すきの際にご回答いただけますと幸いです。
何卒よろしくお願いいたします。
いつも利用させていただいています。
新しいWPでブロックエディタになりましたが、こちらに対応される予定はあるでしょうか。
いつも便利に使っているため、できればブロックエディタになっても利用したいのですが。
よろしくお願いします。
コメントありがとうございます。
新エディタへの対応は予定しております。もう少々お待ちください!
WP4.9.2のASP管理画面で以下のNoticeが表示されます。
Notice: screen_icon の使用はバージョン 3.8.0 から非推奨になりました。代替は用意されておりません。 in /wp-includes/functions.php on line 3842
Notice: get_screen_icon の使用はバージョン 3.8.0 から非推奨になりました。代替は用意されておりません。 in /wp-includes/functions.php on line 3842
ご確認、およびご対応いただけると助かります。
よろしくお願いします。
ご指摘ありがとうございます。修正します。
v1.1.6.1としてアップデートしました。ご確認ください。
早々のご対応ありがとうございました。
Noticeは表示されなくなりました。
とても便利に使えているので、メンテナンスしていただけるのは大変ありがたいです。
今後とも応援しています。
ありがとうございます。
今後も大型アップデート含めて待機しておりますので、ご期待ください。
こちらのプラグイン使用させていただこうと思っていました。
User Role Editorで記事投稿の公開を制限したところ、該当のユーザーにはプラグインが表示されない事象が起きました。
こちらは投稿の公開が許可されたユーザーにしか使用できないでしょうか。またナニか対策はありますでしょうか。
よろしくお願いいたします。
WordPressのデフォルトの仕様では、公開権限を持たないユーザーに予約投稿(公開日時の指定)は許可されていませんので、本プラグインの操作権限もそれに合わせてあります。
「時限公開設定ができる=公開できる」という認識なのだと思います。
hijiri様のプラグインと、Advanced custom fieldの既存投稿を引用する「投稿オブジェクト」を併用しようと考えておりましたが、
Advanced Schedule postsの時限上書きは、別のpost IDの投稿に上書きされてしまうので、
ACFで紐づけた投稿との関連が切れてしまうのですが、なにか対策はありますでしょうか??
よろしくお願いします。
報告ありがとうございます。
再現性を確認しました。
ACFを併用するケースは多いと認識しておりますので、改修可能か確認させていただきます。
ありがとうございます!
URLを入れて、URLから投稿IDを引用するurl_to_postid()なども検討しましたが、カスタム投稿はNGなど色々弊害もあるので、hijiri様の改修で改善されると大助かりです。
ACF投稿オブジェクトフィールドに対応したv1.1.6をリリースしました。
こちらでよろしくお願いします。
早急な対応ありがとうございます。
早速updateして試してみます!
先週versionをupdateして試してみたのですが、うまくいきませんでした。
おそれながらphpソースを拝見しましたところ、
変更箇所の363行目
$sql = “UPDATE $wpdb->postmeta SET meta_value = {$post_id} WHERE meta_key = ‘{$post_type}’ AND meta_value = {$hasp_overwrite_post_id};”;
内のmeta_key='{post_type}’ではなく、投稿オブジェクトの’post_object’ではないでしょうか?
ためしに363行目を
$sql = “UPDATE $wpdb->postmeta SET meta_value = {$post_id} WHERE meta_key = ‘postobject’ AND meta_value = {$hasp_overwrite_post_id};”;
のように記載しましたところ、無事に既存投稿のIDが上書きされた投稿のIDになりました。
お手数ですが、上記についてご確認お願いいたします。
ご指摘の通りです、申し訳ありません。修正してアップデートさせていただきます。ありがとうございました!
アップデートする前に確認していただけたらと思いますが、以下コードでどうですか?
// for ACF Post Object Field
$sql = “SELECT meta_key FROM $wpdb->postmeta WHERE meta_value = ‘{$hasp_overwrite_post_id}’;”;
$posts = $wpdb->get_results( $sql );
$objects = array();
foreach( $posts as $post) {
$objects[] = $post->meta_key;
}
$objects = array_unique( $objects );
foreach( $objects as $object ) {
$sql = “SELECT post_id, meta_key FROM $wpdb->postmeta WHERE meta_key = ‘_{$object}’ AND meta_value LIKE ‘field_%’;”;
$acf_objects = $wpdb->get_results( $sql );
foreach( $acf_objects as $acf_object ) {
$sql = “UPDATE $wpdb->postmeta SET meta_value = {$post_id} WHERE post_id = {$acf_object->post_id} AND meta_key = ‘{$object}’ AND meta_value = {$hasp_overwrite_post_id};”;
$result = $wpdb->query( $sql );
}
}
すいませんが、よろしくお願いします
v1.1.6.1 にアップデートしました。ご確認ください。
ありがとうございます。無事に連動して、投稿参照も入れ替わっておりました。
ありがとうございました!
よかったです^^
最近こちらのプラグインの存在を知り、導入させていただいたのですが、
記事内に記述した及び等が予約更新完了の際に、
消えてしまう不具合がございました。
原因を切り出し検証してみたのですが、
Advanced Schedule Postsのみを有効化した状態でエラーが検出されてしまいました。
検証いただけませんでしょうか。
お願い致します。
報告ありがとうございます。
再現性がありますので改修いたします。
素早い反応ありがとうございます。
改善心待ちにしております。
修正版v1.1.5をリリースしました。
アップデートの上ご確認ください。
早いご対応ありがとうございます。
これからも継続して利用させていただきます。
この度はありがとうございました。
問題ありました。
下記コードだと、管理者すら自分以外の投稿が見えなくなるので、以下のように変更しました。
$sql = "SELECT ID, post_title FROM $wpdb->posts WHERE ID != '$post_id' AND post_type = '$post_type' AND post_status = 'publish'";
if(!current_user_can('administrator')) $sql.= " AND post_author = '$current_user->ID'";
$publish_posts = $wpdb->get_results($sql);
これで管理者は全ての投稿に上書きできるようになります。
ありがとうございます。確認します。
今更ですが、上記だと権限とか無視して管理者のみになっているので、そのあたりは編集権限を考慮したものに書き換えていただけると助かります。なにぶんWPには疎いもので・・・
いつも利用しています。
この度、投稿者にこの機能を使わせようと思った際に、自分の投稿以外にも上書きできてしまうため、コードを一部書き換えました。
advanced_schedule_posts.php 133行目
global $wpdb, $current_user;
advanced_schedule_posts.php 135行目
”SELECT ID, post_title FROM $wpdb->posts WHERE ID != ‘$post_id’ AND post_type = ‘$post_type’ AND post_status = ‘publish’ AND post_author = ‘$current_user->ID'”
設定などで対応していただくか、上記で問題ない場合はアップデートをお願いしたいと思います。
よろしくお願いします。
こんにちは。求めていた予約投稿が実現できそうで非常に有難いです。
利用させて頂きます。
段階的予約上書き公開、是非とも出来るようにして欲しいです!
ご検討よろしくお願い致します。
上書き予約公開機能が嬉しいです!ありがとうございます。
ただ、管理画面で設定したメニューの表示で不具合が出ます。
ページが上書き公開されると、リンク先がスラッグから(以前の)page_idになってしまいます。
改善できますでしょうか。
環境は以下です。
・WordPress4.1.1
・Twenty Fifteen
よろしくお願いします。
検証しますのでお待ち下さい
Advanced Schedule Postsの利用を検討している者です。予約上書き公開をしようとすると、投稿失敗とエラーが出てきます。別のプラグインで「dvanced custom fields」も利用しているのですが、それが原因でしょうか。よろしくお願いいたします。
WordPressのバージョンは4.1です。
Advanced Custom Fields プラグインを使用している場合でも正常動作を確認しております。
通常の予約投稿はできますでしょうか?それもできない場合は擬似クーロンが正常動作していない可能性も考えられます。エラーの内容等教えていただければ検証いたします。