トイレのうず

最近よく見るリンクにアイキャッチと本文の抜粋が入っているカード形式のリンクがあります。こういうヤツです。

これブログカードというらしいです。はてなブログが始めたようです。

これをはてなブログ以外で表示するには以下のようなコードを入れればようようです。

<iframe class="hatenablogcard" style="width:100%;height:155px;max-width:680px;" title="ブログに写真や動画を貼り付ける「リンク挿入」機能を使いやすくしました URLをペーストするだけでコンテンツを埋め込めます" src="https://hatenablog-parts.com/embed?url=http://staff.hatenablog.com/entry/2014/08/14/184000" width="300" height="150" frameborder="0" scrolling="no"></iframe>

これを使ってもいいのだけれど、はてなブログのブログカードを使うと、 iframe ではてなの URL を読み込んで使っているので、リンクがすべてはてなからされたことになってしまうのです。

WordPress 標準のブログカード

似たようなものが WordPress 4.4 から標準機能として搭載されたみたいです。 YouTube や Flickr を埋め込む Enbed 機能は前からありましたが、同様に WordPress で作ったサイトも埋め込めるようになったみたいです。 WordPress の標準機能でブログカードを表示するには、ほかの文字は入れず URL だけを 1 行で書けばいいみたいです。

http://www.1010uzu.com/boyaki/2017/03/nitori-wire-baskets-vegetables-not-in-refrigerator

WordPress 標準のブログカードが表示されない

それで早速表示させてみたのだけれど、リンクが以下のように <blockquote> で囲まれるだけで、ブログカード形式で表示されません。

Permalink Redirect を無効にすると WordPress 標準のブログカードが表示される

ブログカードが表示されないのは Permalink Redirect のせい

原因を調査してみると Permalink Redirect というプラグインとの相性が悪いようです。 Permalink Redirect を無効にするときちんと表示されます。

Permalink Redirect を無効にすると WordPress 標準のブログカードが表示される

SSL 化に伴い画像にしました。

Permalink Redirect は以前パーマリンクを変更した際、古いパーマリンクからアクセスしたときにリダイレクトするようにインストールしたものです。
→ WordPress 3.3.1 パーマリンク変更後をリダイレクトするプラグインの動作検証

Permalink Redirect は WordPress 公式にもなく以下のページからダウンロードしてきたもので、かなり古く 2011 年から更新されていません。
→ Scott Yang ’ s Playground : Permalink Redirect WordPress Plugin

代替プラグインを探してみたのですが、古いパーマリンクを新しいものにリダイレクトできるプラグインはありませんでした。以下のサイトによると、 Simple 301 Redirects というプラグインでパーマリンクのリダイレクトができると書いてあります。(自サイト以外でもリンク先が WordPress 4.4 以上で埋め込み機能を停止してなければ、ブログカードが表示されます。)

http://www.wpexplorer.com/change-permalinks-wordpress/

本サイトを SSL 化したので、 http:// で始まる URL のブログカードは表示されなくなりました。

しかしどうやら WordPress とプラグインのアップデートによって動かなくなった模様です。パーマリンクのタグ( %year% 、 %postname% など)で指定しなければ動きますが、 1 件ずつ記入するのは数が多くて現実的ではありません。

Permalink Redirect を改造

以下のサイトを参考に URL を書き出して .htaccess で指定しようかとも思ったのですが、スラッグを変更したらリダイレクトが 2 回かかることになるな、と思いやめました。
→ Web Shufu :【 wordpress サイト限定】リダイレクトのための .htaccess への記述を表計算ソフトと get_posts で効率化

結局 Permalink Redirect を改造して動かすことにしました。 WordPress 3.3 の頃の仕様なので、埋め込みページに対応していないようです。 101 行目に以下のように追加しました。

        if ($query->is_trackback || 
            $query->is_search || 
            $query->is_comments_popup ||
            $query->is_robots ||
            $query->is_embed || //追加
            $this->is_skip($req_uri))
        {
            return;
        }

埋め込み (is_embed) のときは処理を止めるようにしているので、この改造では古いパーマリンクの URL を貼ってもブログカードには変換してくれません。

http://www.1010uzu.com/boyaki/200410-02235117.html

パーマリンクを変更したのは、 2010 年の 12 月からなので、古い URL で埋め込んでいる人はいないだろうから問題にはならないでしょう。

ブログカードで表示してみたけれど、このサイトは WordPress 標準のアイキャッチを使用していないので、カードが寂しいですね。あとカードがやたらと大きいです。それから iframe で相手方の情報をもらってきているので、相手のサーバーが遅いと表示も全体的に遅くなります。遅延読み込みの Lazy Load とか使えば解決するかな。もう少し改造が必要です。

関連記事

WordPress 3.3.1 パーマリンク変更後をリダイレクトするプラグインの動作検証
WordPress
Permalink Redirectの設定画面
WordPress パーマリンクを途中から変更できるプラグイン Advanced Permalinks
WordPress
Advanced Permalinks の Post ID 別パーマリンク設定画面
WordPress 投稿スラッグを管理画面の投稿編集一覧に表示させる
WordPress
WordPress管理画面記事一覧に投稿スラッグを表示
外部サイトの画像を WordPress のサイトアイコンに設定する
WordPress
ブログカードのサイトアイコンがWordPressのデフォルト
WordPress の Embed の head に不要な JavaScript や CSS が出力されるのを修正する
WordPress
thumbnail
 WordPress のメニューツリー表示 WP-dTree を外した
WordPress
thumbnail