[Pz-LkC]Pz-LinkCardでPDFのURLを指定するとFatalエラーが発生する→ver1.6.8で対応済

この記事は約4分で読めます。

リンク先をリンクカード形式で表示するWordPressプラグイン「Pz-LinkCard」をWordPress公式ディレクトリで公開しています。

特定のURLでFatalエラーが発生する現象が確認されています。

「Pz-LinkCard ver1.6.8」で対応しました。

Pz-LinkCardとは

ショートコードでURLを記述するだけで、リンク先からタイトルと抜粋文を取得してリンクカード形式(ブログカード形式)で表示させるWordPressプラグインです。

テキストリンクと組み合わせることでクリック率をあげたり、テキストばかりの文書にカードいを挿入することで少しメリハリをつけることができます。

詳しくは下記リンクをお読みいただけると助かります。

Fatalエラー発生!これはテストではありません!

記事を修正するついでに、テキストにリンクを設定していたところをリンクカードのショートコードに置き換えたらFatalエラーが発生。

ぽぽろん「…Σ(゚ロ゚)o゙」

Fatal error: Unsupported operand types in
/…/wp-content/plugins/pz-linkcard/pz-linkcard.php on line 920

ぽぽろん「ギャーーー!!Σ(゚ロ゚)o゙」

本番環境だよ!Σ(゚ロ゚)o゙

テスト環境じゃないよ!Σ(゚ロ゚)o゙

他のページもエラー出てるんじゃないだろか!Σ(゚ロ゚)o゙

と、慌てたものの、修正したページだけエラーのようです。

1個ずつURLを消したりして試したところ、PDFファイルのリンクがダメだったようです。

 

落ちている箇所を見ると、METAタグパース(分析・解析)のところ。

 // metaタグ パース
$match = null;
preg_match_all('/<\s*meta\s(?=[^>]*?\b(?:name|property)\s*=\s*(?|"\s*([^"]*?)\s*"|\'\s*([^\']*?)\s*\'|([^"\'>]*?)(?=\s*\/?\s*>|\s\w+\s*=)))[^>]*?\bcontent\s*=\s*(?|"\s*([^"]*?)\s*"|\'\s*([^\']*?)\s*\'|([^"\'>]*?)(?=\s*\/?\s*>|\s\w+\s*=))[^>]*>/is', $html, $match);
if (isset($match) && is_array($match) && count($match) == 3) {
$tags += array_combine($match[1], $match[2]);
}

array_combile() で落ちているようです。

ちゃんとタグが無かったら入って来ないようにしてるつもりだったのですが…。

あとでちゃんとデバグします。

(2016/05/22追記)array_combileそのものでは無く、直前で$tagsに配列(array)が入っている想定でしたが、「+=」を使って配列を追加するときに直前でnullが入っているときにFatalエラーをなっていました。

PDFとかZIPとか、ダウンロードファイルへのURLはエラーになってしまう可能性がありますので、ご注意ください(^-^;

(2016/05/22追記)ver1.6.8以降でエラーにならないように対応済です。PDFなどを指定することは出来ますが、タイトルにはURLが表示され、PDFの内容を取得したり表示したりはできません。

では、この辺で。(^-^)o

コメント

タイトルとURLをコピーしました