質問: ワードプレスでサイトを運営しています。 Feedlyなどのリーダーで購読してくれる方がいるのですが、ささいな記事の更新(誤字修正)のたびに、更新通知が送られているようで(自分で購読して確認済み)、読者の方をうんざりさせていないか心配です。 自分はこのようなささいな更新の頻度が高く、気づいたらすぐ修正したいタイプなのですが、RSSフィードなどを発信せずに更新する方法はありませんでしょうか? もちろん通知したい場合もあるので、使い分けられるようになれば最良です。 現在は記事の公開時と、更新時に通知が送られているようです。 よろしくお願いします。 使用テーマ:stinger3 forFANS http://stinger3.com/fan/ 使用プラグイン(RSSに関係ありそうなもの): PuSHPress All In One SEO Pack
回答: POSTされるデータから更新日時を取り除いたらいけるかも、と思い試しに書いてみました。 remove_actionでPuSHPressを外している行のみ未検証ですが、PuSHPressのコードを見る限り きちんと動作するはずです。 ``` // 編集画面にチェックボックスを追加 add_action('admin_menu', function () { add_meta_box('html_sneak_update', 'こっそり更新', 'html_sneak_update', 'post', 'side', 'high'); }); // 実際に表示されるHTML function html_sneak_update() { echo <<< EOM 更新日時を変更しない EOM; } // sneak_updateがオンかつ公開済みの記事なら // 新しい更新日時を取り除く、PuSHPress::publish_postを実行させない add_filter('wp_insert_post_data', 'my_insert_post_data', 10, 2); function my_insert_post_data($data, $postarr) { if (filter_input(INPUT_POST, 'sneak_update') && filter_input(INPUT_POST, 'original_post_status') === 'publish') { unset($data['post_modified']); unset($data['post_modified_gmt']); remove_action('publish_post', array('PuSHPress', 'publish_post')); } return $data; } ``` 上記内容をfunctions.phpに追加すると、編集画面のサイドバーに「こっそり更新」 という項目が現れます。ここにチェックを入れて保存した場合、更新日時の変更が行われません。 結果フィードが更新されません、**フィードが更新されません**。 当初の期待動作としては「更新日時が変わらないのでリーダーから見て実質更新なし扱いになる」 だったのですが、どうもデータから更新日時を取り除くとフィードの更新処理自体がスキップされるようです。 もしタイトルや概要に拾われる範囲の文章に変更を加えても、それがフィードの内容に適用されるのは 次の記事の更新タイミングになります。そこもカバーするとなると他のアプローチが必要なのかもしれません。 pushpress/class-pushpress.php