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