Advanced Schedule Posts 予約公開終了、予約上書き公開ができるプラグインを公開しました

WordPress のディフォルトの時限設定は、予約公開だけです。
Advanced Schedule Posts プラグインを導入することで、予約公開取り下げ予約上書き公開ができるようになります。

hasp1

予約公開取り下げ

これは単純に予約公開の逆です。
指定した日時に公開を取り下げることができます。公開から下書きになります。

hasp2

予約上書き公開

これは投稿型CMSの弱点を補うものです。
ディフォルトの予約公開と同時に設定することで、公開時に他の投稿に上書くことができます。

hasp3

どういった時に使えるかを事例をあげて説明します。

ケーススタディ

・プレゼント応募ページを作成したい
・応募期間中、応募終了後にそれぞれ内容を差し替えたい

ページを作成するオブジェクトは、投稿でも固定ページでもカスタム投稿でもかまいませんが、応募期間中、応募終了後のコンテンツが表示されるページ、つまりパーマリンクURLは常に同一でなければなりません。
これを時限設定で行うことができるようになります。

1. 応募期間中のページを作成

141225-0005

2. 応募終了後のページを作成

予約上書き投稿を設定して予約投稿する

141225-0006

一覧画面でみるとこう

141225-0007

3. 予約投稿の日時になると自動的に…

141225-0008

応募終了後のページが公開されると同時にスラッグが差し代わり

141225-0009

応募期間中のページのスラッグは下書きに。スラッグも変更される

141225-0010

予約公開取り下げと予約上書き公開の同時設定

予約上書き公開と予約公開取り下げを同時に指定することもできます。

Future To Do

いまのところ予約上書き公開の設定は1回のみですが、段階的予約上書き公開の要望があれば、アップデートも検討しようかと思います。

さきほどのプレゼントページのケーススタディに当てはめると、応募開始前→応募受付中→応募終了後、の3段階の予約上書き公開の時限設定ができることになります。

  • katbi

    Advanced Schedule Postsの利用を検討している者です。予約上書き公開をしようとすると、投稿失敗とエラーが出てきます。別のプラグインで「dvanced custom fields」も利用しているのですが、それが原因でしょうか。よろしくお願いいたします。

    WordPressのバージョンは4.1です。

    • hijiriworld

      Advanced Custom Fields プラグインを使用している場合でも正常動作を確認しております。
      通常の予約投稿はできますでしょうか?それもできない場合は擬似クーロンが正常動作していない可能性も考えられます。エラーの内容等教えていただければ検証いたします。

  • monte

    上書き予約公開機能が嬉しいです!ありがとうございます。

    ただ、管理画面で設定したメニューの表示で不具合が出ます。
    ページが上書き公開されると、リンク先がスラッグから(以前の)page_idになってしまいます。
    改善できますでしょうか。

    環境は以下です。
    ・WordPress4.1.1
    ・Twenty Fifteen

    よろしくお願いします。

    • 検証しますのでお待ち下さい

  • mitsuaki

    こんにちは。求めていた予約投稿が実現できそうで非常に有難いです。
    利用させて頂きます。
    段階的予約上書き公開、是非とも出来るようにして欲しいです!
    ご検討よろしくお願い致します。

  • RO

    いつも利用しています。
    この度、投稿者にこの機能を使わせようと思った際に、自分の投稿以外にも上書きできてしまうため、コードを一部書き換えました。

    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'”

    設定などで対応していただくか、上記で問題ない場合はアップデートをお願いしたいと思います。
    よろしくお願いします。

  • RO

    問題ありました。

    下記コードだと、管理者すら自分以外の投稿が見えなくなるので、以下のように変更しました。

    $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);

    これで管理者は全ての投稿に上書きできるようになります。

    • ありがとうございます。確認します。

      • RO

        今更ですが、上記だと権限とか無視して管理者のみになっているので、そのあたりは編集権限を考慮したものに書き換えていただけると助かります。なにぶんWPには疎いもので・・・