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

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

wp_Blog_Wordpress

【※ご注意】
<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

イラストレーター/0.1up project主催者 イラストは厚塗りで制作しています。 厚塗りは、他の手法に比べ、「存在感や重さ、質感による説得力」をより表現できるツールと考えています。 漫画をベースにした、現環境では主流から外れていると思いますが、世界観を広げる為には、厚塗りの要素もスパイスになるのではないでしょうか。 「世界観にもう一味試したい」そんなときには、ぜひお声がけください。