質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
RSS

RSS(Really Simple Syndication)はブログのエントリやニュースの見出し、標準のフォーマットの音声やビデオなどを発行するために使われるウェブフィードのフォーマットの集合体です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

4952閲覧

RSSフィードを発信しないで記事を更新する方法

yacht

総合スコア21

RSS

RSS(Really Simple Syndication)はブログのエントリやニュースの見出し、標準のフォーマットの音声やビデオなどを発行するために使われるウェブフィードのフォーマットの集合体です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

2グッド

0クリップ

投稿2016/07/11 03:11

ワードプレスでサイトを運営しています。
Feedlyなどのリーダーで購読してくれる方がいるのですが、ささいな記事の更新(誤字修正)のたびに、更新通知が送られているようで(自分で購読して確認済み)、読者の方をうんざりさせていないか心配です。

自分はこのようなささいな更新の頻度が高く、気づいたらすぐ修正したいタイプなのですが、RSSフィードなどを発信せずに更新する方法はありませんでしょうか?

もちろん通知したい場合もあるので、使い分けられるようになれば最良です。

現在は記事の公開時と、更新時に通知が送られているようです。
よろしくお願いします。

使用テーマ:stinger3 forFANS
http://stinger3.com/fan/

使用プラグイン(RSSに関係ありそうなもの):
PuSHPress
All In One SEO Pack

nnssn, kei344👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

POSTされるデータから更新日時を取り除いたらいけるかも、と思い試しに書いてみました。
remove_actionでPuSHPressを外している行のみ未検証ですが、PuSHPressのコードを見る限り
きちんと動作するはずです。

php

1// 編集画面にチェックボックスを追加 2add_action('admin_menu', function () { 3 add_meta_box('html_sneak_update', 'こっそり更新', 'html_sneak_update', 'post', 'side', 'high'); 4}); 5 6// 実際に表示されるHTML 7function html_sneak_update() { 8echo <<< EOM 9<div> 10<input type="hidden" name="sneak_update" value="0"> 11<label><input type="checkbox" name="sneak_update" value="1">更新日時を変更しない</label> 12</div> 13EOM; 14} 15 16// sneak_updateがオンかつ公開済みの記事なら 17// 新しい更新日時を取り除く、PuSHPress::publish_postを実行させない 18add_filter('wp_insert_post_data', 'my_insert_post_data', 10, 2); 19function my_insert_post_data($data, $postarr) { 20 if (filter_input(INPUT_POST, 'sneak_update') 21 && filter_input(INPUT_POST, 'original_post_status') === 'publish') { 22 unset($data['post_modified']); 23 unset($data['post_modified_gmt']); 24 remove_action('publish_post', array('PuSHPress', 'publish_post')); 25 } 26 return $data; 27} 28

上記内容をfunctions.phpに追加すると、編集画面のサイドバーに「こっそり更新」
という項目が現れます。ここにチェックを入れて保存した場合、更新日時の変更が行われません。
結果フィードが更新されません、フィードが更新されません

当初の期待動作としては「更新日時が変わらないのでリーダーから見て実質更新なし扱いになる」
だったのですが、どうもデータから更新日時を取り除くとフィードの更新処理自体がスキップされるようです。
もしタイトルや概要に拾われる範囲の文章に変更を加えても、それがフィードの内容に適用されるのは
次の記事の更新タイミングになります。そこもカバーするとなると他のアプローチが必要なのかもしれません。

pushpress/class-pushpress.php
https://github.com/wp-plugins/pushpress/blob/master/class-pushpress.php

投稿2016/07/12 16:23

nnssn

総合スコア1221

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yacht

2016/07/16 08:01

ありがとうございます! 試しましたが問題なく使えています。 思ったんですが、これプラグインにするといいかもしれませんね。 おそらく需要あると思うんですよね。 万が一動作不良が判明した場合でもオンオフできたりしますし、一つどうでしょうか?なんつって。 ありがとうございました!
nnssn

2016/07/16 23:13

同じような機能のプラグインって絶対あるとは思うんですけどね。あたりをつけた検索ワードがずれているのか、プラグインの数が多すぎるせいか、探しきれませんでした。 回答内容を野良プラグイン化してみました。とりあえず野良で。使用方法は下記zipを解凍して出来る「wp-secretly-modify-master」というディレクトリを「secretly-modify」にリネームしてpluginsに放り込む -> 管理画面から有効化。リネームしないと日本語化がうまくいかないかもです。 https://github.com/nnssn/wp-secretly-modify/archive/master.zip プラグイン化にあたって直接関係のないPuSHPressの処理内容を含むのもおかしいので、その部分はコードから取り除いています。「secretly_modify」というフックを設けたのでそちらでの処理をお願いします。functions.phpに以下の内容を追加で大丈夫だと思います。 add_action( 'secretly_modify', function () { remove_action( 'publish_post', array('PuSHPress', 'publish_post') ); });
yacht

2016/07/22 09:27

お返事遅れてすみません。 こちらも早速導入させてもらいました。 ちゃんと動いているようです。 質問なのですが、 「読者にはフィード通知をしないが、グーグルにはサイトを更新したことを通知する」という場合であれば、後半のpushpress部分は追記しなくても大丈夫ということでしょうか?
nnssn

2016/07/23 13:57

FeedlyにもPuSHが行くことを考えたら無効化しておいたほうが無難な気はします。Googleなら通常のクローラーがそのうち巡回しにくると思うので。
yacht

2016/08/14 22:30

絶賛利用中です。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問