WordPressにAmazonアフィリエイトを載せられなくなった

  • このエントリーをはてなブックマークに追加
  • 0

このブログではずっと「tmkm-amazon」という、古いプラグインを使ってAmazonのアフィリエイトリンクを載せていたのだが、最近

アマゾンのサーバでエラーが起こっているかもしれません。
一度ページを再読み込みしてみてください。

というエラーが出てリンクが表示されなくなってしまった。原因はわからなかったが、
「そういえば最近WordPressを5.2にメジャーバージョンアップしたな。それに対応してないのかな?」
と思い、もう古いプラグインだから改善されないだろうし、乗り換えを検討して
Amazon公式のWordPressプラグインを入れてみた。
しかし、投稿画面に出てきた検索ボタンを押しても動かない。
「WordPressを新しくしたから、PHPも新しくしないとうまく動かないのか?」
と思い深く考えずPHPを7.3に変更してみたら、PHPのエラーがやたら出るようになってしまった。

  1. Parse error: syntax error, unexpected 'new' (T_NEW) in

こういうの。ネットで調べると、

  1. $○○ = & new ××

と書いてあるところを

  1. $○○ = new ××

にすると動くらしい。よくわからんがやってみたら直った。
すると、次はtmkm-ammazonのプラグインで、「ereg」っていう関数がないと怒られた。

PHPのマニュアルを見ると、「preg_match」に置き換えられたとのことなので、書き換えてみる。

すると、

  1. Delimiter must not be alphanumeric or backslash in

と出る。どうもpreg_matchでは正規表現文字列を「/」のようなデリミタで囲まないとダメらしい。
仕方ないので、正規表現の文字列を作ってるところの前後に「/」を付与して動かす。

・・・すると、エラーは一通り消え、

アマゾンのサーバでエラーが起こっているかもしれません。
一度ページを再読み込みしてみてください。

が出てきた・・・フリダシに戻る。
仕方ないので、上のエラーが出る場合もう何も表示しないように対処しておいた。
アフィリエイトリンクは何とかして復活させよう。

後、この記事を書くために「iG:SyntaxHilighter」を使おうとしたら、

  1. Warning:  Illegal string offset atts in

というエラーが出た。どうもPHP7.1以降は変数を自動で配列にしてくれないとか言う原因らしい。
そこで明示的に配列化するコードを追加してみる。ここ。

  1. if ( array_key_exists( $tag, $this->__geshi_language ) ) {
  2.     if (!is_array($atts)) { //追加
  3.         $atts = array(); //追加
  4.     }//追加           $atts['language'] = $tag;   //shorthand tag used, so tag name is language
  5. }

取り敢えず動いたが、「view plain text」のリンクをクリックしても何も起きん。
もう、一度WordPressに大手術が必要だな・・・。

スポンサーリンク
スポンサーリンク
  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク