[wordpress]post_expiratorで一括編集するとバグる

概要: wordpres用の公開期限を設定できるプラグイン「Post Expirator」を一括編集に対応させる方法を述べる。

Plugin Name: Post Expirator Version: 2.3.1.1 で確認

post-expirator.phpの1716行目のコメントアウトされているあたりを以下のように変更する。

//1711行目から
foreach( $post_ids as $post_id ) {
  // Only update posts that already have expiration date set.  Ignore Others
  $ed = get_post_meta($post_id,'_expiration-date',true);
  if ($ed) {
    $opts = get_post_meta($post_id, '_expiration-date-options', true);
    //_scheduleExpiratorEvent($post_id,$ts,$opts);
    _scheduleExpiratorEvent((int)$post_id,$ts,$opts);
  }
}

編集とクイック編集だとpost_idをintで渡しているのに一括編集時(bulk)だとstrで渡しているっぽい。

wp_scheduleの中ではintとstrは別物として扱うが どちらも正しくスケジュール動作してしまうので二重登録されるおそれがある。 というか、なった。 気をつけよう。

非公式な修正なのでアップデートで上書きされます。ご注意。