Simplicityで外部ブログカードが出なくなっちゃったよっ!
Simplicityで外部ブログカードがただのテキストに!
文字通りなんですが……それだけじゃありませんでした。
テキストでリンクすら挿入できなくなりました。
何これ!?
ブログカードが表示されない対処法を探す
まず本家サイトに行きました。
するとこんなスレが見つかる。
パーマネントリンク関係のプラグインなんて入れてないしなあ……。
リンクについては、入れると自動で削除される有様。
最初から試すも何もありません。
問題の切り分け
原因を探るために、切り分けていきます。
まず原因は親テーマか子テーマか。
子テーマから親テーマに切り替えると、ちゃんと表示されました。
つまり原因は子テーマの記述にあります。
(こういうのはカスタマイズの不手際によって生じるものが大半ですから当然ではあるのですが)
ここで子テーマを一旦ダウンロードしてサーバーから削除。
まっさらな子テーマをインストールし直します。
続けて、カスタマイズしたファイルをstyle.css、header-insert.php、functions.phpの順番で戻していきました。
あっ! わかった!
なぜ、外部ブログカードが表示されなくなったのか
具体的には「WordPressの自動整形機能を無効にするためのコード」です。
remove_filter('the_content','wpautop'); // 記事の自動整形を無効にする
remove_filter('the_excerpt','wpautop'); // 抜粋の自動整形を無効にする
消したら無事に動きました。
WordPressって打ちづらい。
それが私の第一印象でした。
なんせコピペでも改行がぐだぐだになるんですから。
すると、あちこちの初心者用のサイトで「自動整形を無効にするといいよ」と書いてある。
切ってみたら、確かに打ちやすくなりました。
そして切ってからもしばらくはブログカード表示されていました。
表示されなくなったのはきっと、後に入れたプラグインなどが干渉してしまったとかではないかと思います。
【2016/11/19追記】 抜本的な解決法
自動整形を切っている場合は、次のコードを
$res = preg_match_all('/^(<p>)?(<a.+?>)?https?:\/\/'.preg_quote(get_this_site_domain()).'\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+(<\/a>)?(<\/p>)?(<br ? \/>)?$/im', $the_content,$m);
以下の通り修正してください。これで動くと思います。
$res = preg_match_all('/^(<a.+?>)?https?:\/\/'.preg_quote(get_this_site_domain()).'\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+(<\/a>)?(<br ? \/>)?$/im', $the_content,$m);
参考ページ
ブログカードを利用する際に心掛けたいこと
Simplicity作者のわいひら様も述べてますが、URLだけを打ち込むよりリンクをつけた方がいいです。
わいひら様の掲げる理由。
テーマを変える可能性を見越して
でも、それだけじゃない。
今回みたいなトラブルもありますから。
Simplicityに限らず、どのテーマでも同じです。
結論
外部ブログカードが表示されないときは、自動整形機能も疑ってみて
いざというときのために、URLは「<a href=”http://……」の形式で書いてね