Facebook のキャッシュを URL Linter で更新するのが面倒なので記事の公開・更新時に自動的にキャッシュを更新させる。

WordPress で記事を書いて公開した後にタイポがあったりアイキャッチ設定し忘れたりして、すぐ修正したりすることが結構あるんですけど、修正して Facebook で告知しようとするとアイキャッチが出なかったり修正前の文章がシェアされたりということも、もれなくついてきちゃったりします。これは Facebook に更新前のページのキャッシュが残っているからで、これを更新するには下記のツールで当該 URL を入力してキャッシュを更新する必要があります。

前はこれワンクリックで更新できてたんですけど、現在はワンクリック目でキャッシュの確認、ツークリック目でキャッシュの更新という流れに変わっています。面倒くさい。自動化したい。ということでプラグインが無いか探してみましたが、現在の URL Linter の仕様に対応していないものがいくつかあったくらいだったので自作してみました。下記のコードを functions.php に貼り付けるだけで動作します。

class my_facebook_debugger {
	private $api = 'https://graph.facebook.com?id=%s&scrape=true';

	public function __construct() {
		add_action( 'transition_post_status', array( $this, 'debugger' ), 10, 3 );
	}

	public function debugger( $new_status, $old_status, $post ) {
		if ( $new_status === 'publish' ) {
			$t = wp_remote_post( sprintf( $this->api, get_permalink( $post->ID ) ) );
		}
	}
}
new my_facebook_debugger();

記事の公開時、更新時(ステータスが publish のとき)に Facebook のキャッシュを更新します。更新した後に URL Linter でチェックするとキャッシュが更新されていることが確認できるかと思います。

後日「WordPressでの開発をちょっと楽にするプラグイン MW WP Hacks を公開しました。」のプラグインにも機能追加しようと思います。

  • ブックマーク
  • Feedly

この記事を書いた人

キタジマタカシ

長崎在住、フリーランスのWordPress テーマ / プラグインデベロッパー。 多数のプロダクトをオープンソースで開発・公開しています。現在は WordPress 有料テーマ Snow Monkey を開発・販売しています。