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 を公開しました。」のプラグインにも機能追加しようと思います。

MW WP Form

MW WP Form はショートコードベースのフォームプラグインです。多くの機能を持っており、例えば、多くのバリデーションルール、問い合わせデータの保存、そしてグラフ機能集計などを使用することができます。

さらに詳しく
Habakiri

Habakiri

Bootstrap ベースのシンプルな WordPress テーマ。レスポンシブ、多くのカスタマイズ機能。圧縮された CSS・JS を使用する高速化対策。Microformats 対応。Sass、クラスベースの functions.php。

さらに詳しく
basis-stylus

Basis

軽量なレスポンシブ Stylus/CSS フレームワーク。Flexbox ベースのグリッドシステム、疎結合なコンポーネント、バーティカルリズム。

さらに詳しく