WordPressのプラグイン「Internal Link Building」を有効にするとエラー出るので修正してみた。

wp_Blog_Wordpress

日本語にも対応しているキーワードへのリンク挿入プラグイン「Internal Link Building」。いざ有効にしてもエラーが出て上手く動かない。で、修正方法がわかったのでまとめます。

【※ご注意】
<2019/04/08>
しばらく試してみたけ結果、以下の方法では、ページ内にリンクしたい同単語が複数ある場合、うまくいかないようでした。
下記の方法は、あくまで足がかりと考えてもらえればと、思います。


頻繁に使うキーワード、そこにリンクを張りたいと考えると、手で設定していくのは手間ですよね。リンク先が変更になったらと考えると頭が痛くなります。

プラグインがないかと調べてみると日本語にも対応しているものとして、「Internal Link Building」が良さそうでした。しかし参考にした記事自体も数年前。その時点で更新が止まっており、公式プラグインからの除名も危ぶまれていました。

現在でも WordPressのプラグイン検索には出てくるので、まだ除名はされていない様子。ただ、最終更新から5年。試しにインストールして有効にしてみると特にエラーは出ませんでした。動くのかな?

キーワードの登録も無事に終わったようなので、記事を書いてプレビューを見てみると、PHPファイルがおかしいよという内容でエラーが出ました。

本サイトの環境だとプラグインコードの706行目でエラーが発生している様子です。

誰か対応している人はいないかなと探しても、残念ながらズバリの回答をされている記事はありませんでした。しかし、いくつかの記事を参考にすると修正ができそうなので修正してみます。

エラーが出ていた706行目は関数「returnblocks」内の処理になります。
で、修正したコードが下記になります。

修正コード:

<修正前>

static function returnblocks($blocks){
global $protectblocks;
$protectblocks[] = $blocks[1]; return '[block]'.(count($protectblocks)-1).'[/block]';
}

<修正後>

static function returnblocks($blocks){
global $protectblocks;
$protectblocks = $blocks[1];
if (is_array($protectblocks)) {
return '[block]'.(count($protectblocks)-1).'[/block]';
}else{
return $protectblocks;
}
}

PHP 7.2でcount関数の仕様変更が原因のようですね。そこをif文で分岐処理して上げることで、しばらくは使って行けどうです。

参考:

※ プラグインの検索から探す場合は、著者名で検索を描けたほうが見つけやすいです。同名のプラグインが存在していますので、ご注意願います。

PHP7.2のcountにハマった話

この断片があなたの星に続く道を、少しでも照らすことを願って。

投稿者: 0.1

厚塗りで「存在感や重さ、質感による説得力」のあるイラストを目指しています。 日本では線画をベースとしたイラストが主流ですが、そこから外れたモノもイラストの世界を広げる為に必要だと考えています。「世界観にもう一味試したい」そんなときには、ぜひお声がけください。